Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.01.2011, 12:48
Новичок на форуме
Отправить личное сообщение для rjn77 Посмотреть профиль Найти все сообщения от rjn77
 
Регистрация: 05.01.2011
Сообщений: 3

Оператор цикла "for" не сохраняет знак результата.
Добрый день! Первое предложение традиционно - я в JS новичёк !

Сейчас пишу скрипт, вычисляющий сумму ряда. Присутствует в знаменателе выражения и двойной факториал. В общем несколько раз проверял - и числитель и знаменатель на каждом шаге цикла считаются правильно. Частное также подсчитывается правильно на каждом шаге. А вот сумма ряда (sum) уже на втором шаге - ошибочна. Долго искал в чём дело. Оказывается, при прибавлении на очередном шаге текущего элемента суммы ряда - складываются модули значений, не учитывая, что какое-то было отрицательным, а какое-то положительным, а потом уже присваивается знак последнего элемента ряда.
Простите, написал сложно. Но скрипт и код не сложные, посмотрите.
Подскажите, можно ли проблему победить???!!! Заранее благодарен за советы!!!

PS. Сейчас проверяю - ещё где-то ошибка есть, неправильно считает(((((
<HTML> <HEAD>
 <TITLE> Сумма ряда </TITLE>

<script type="text/javascript">


function summa()
{
  
  var x = document.test.x.value;
  var w = document.test.w.value;
  var sum = 0;


for (z=1; z<=w; z++){
var n=z+2;

var factorial = function(n) { 
    return (n<=1) ? 1 : n*arguments.callee(n-2); 
                                    }
  
var s= (Math.pow(-1,(z-(-1)))*(Math.pow(x, 2*z-(-3)))) / factorial(n);

sum+=s;

jndtn = sum

  }

  document.test.answer.value = jndtn;
}


</script>

<BODY>
<H2 align="left">
</H2> <left>
<H2>Cумма ряда</H2>
<h4>Задание:</h4><BR>

<P> Вычислить сумму ряда<BR><BR>

<FONT>
<img src="Сумма ряда.JPG"</FONT><hr>
</P>
 </left> <br>

<form action="" name="test">
Введите значение переменной k:<input type="text" id="w" name="w" value="" /><br><br>
Введите значение коэффициента x:<input type="text" id="x" name="x" value="" /><br><br>
  

  
<input type="button" onclick="summa()" value="Ответ" /><br><br>



Сумма=<input type="text" id="answer" name="answer" value="" />

</form>
</BODY>
 </HTML>

Последний раз редактировалось rjn77, 05.01.2011 в 15:26.
Ответить с цитированием
  #2 (permalink)  
Старый 05.01.2011, 12:55
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

rjn77 отформатируйте свой код с помошью тега [html]
Ответить с цитированием
  #3 (permalink)  
Старый 05.01.2011, 13:24
Новичок на форуме
Отправить личное сообщение для rjn77 Посмотреть профиль Найти все сообщения от rjn77
 
Регистрация: 05.01.2011
Сообщений: 3

monolithed, не понял Вас.
Но вопрос исчерпан - я нашёл свою ошибку. Не в цикле дело и не в знаке, а в том что в выражение я подставлял значение самой переменной (w), а не приравненного к переменной на каждом шаге счётчика (z)/

Всем спасибо! Извините, если отвлёк!!!

Зато теперь знаю, как считать на JS факториал и двойной факториал, кому надо, берите!
Ответить с цитированием
  #4 (permalink)  
Старый 05.01.2011, 13:32
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от rjn77
monolithed, не понял Вас.
пробелы уберите в [ HTML ]

фунуцию факториала вынесите из цикла или запишите в нотации Function Expression:
var factorial = function(n) {
    return (n<=1) ? 1 : n*arguments.callee(n-1);
}

Последний раз редактировалось monolithed, 05.01.2011 в 13:48.
Ответить с цитированием
  #5 (permalink)  
Старый 05.01.2011, 15:22
Новичок на форуме
Отправить личное сообщение для rjn77 Посмотреть профиль Найти все сообщения от rjn77
 
Регистрация: 05.01.2011
Сообщений: 3

monolithed, да уж, грамотно кодировать мне не у кого поучиться... (((

Спасибо ещё раз!

Заодно исправил ошибки, вдруг кому пригодится... Эээ, моя функция факториала в Вашем коде притерпела изменения (и двойной факториал стал обычным), мне-то это неважно, лишь бы кто-нить не скопировал по неосторожности.

Последний раз редактировалось rjn77, 05.01.2011 в 15:29.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск