Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Рекурсивная функция

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
stas0
Отправлено: 13 Июля, 2013 - 20:18:55
Post Id



Частый гость


Покинул форум
Сообщений всего: 186
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)

[+][+][+]


CODE (javascript):
скопировать код в буфер обмена
  1. function factorial(x){
  2.  
  3.   if (x == 1)
  4.  
  5.     return 1;
  6.  
  7.   document.write(x + " Hello<br>");
  8.  
  9.   return x * factorial(x-1);// return x - factorial(x-1);
  10.  
  11. }


Когда стоит умножение или сума все нормально, но когда стоит минус никак не могу понять как выполняется выражение!

Если *:
n * (n-1) * (n-2) * ... * 1

Какая формула при отнимании и делении в таком случая?
 
 Top
armancho7777777 Супермодератор
Отправлено: 13 Июля, 2013 - 20:22:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




stas0, покажите как Вы вызываете функцию.
С каким аргументом стартует функция ?
 
 Top
stas0
Отправлено: 13 Июля, 2013 - 20:27:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 186
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)

[+][+][+]


factorial(4);
factorial(5);
factorial(6);
...

(Отредактировано автором: 13 Июля, 2013 - 20:29:58)

 
 Top
armancho7777777 Супермодератор
Отправлено: 13 Июля, 2013 - 20:30:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Любое число больше нуля - и функция встанет как только значение будет равно еденице.
Что не так ?
Передайте любой аргумент меньше еденицы и получите ожидаемый результат.
 
 Top
stas0
Отправлено: 13 Июля, 2013 - 20:33:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 186
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)

[+][+][+]


Там стоит условие-ограничитель. Как и при умножении:
factorial(5);
5*4*3*2*1 = 120
Аналогичное действие нужно выполнить для отнимания, а не удовлетворить условие с if

(Отредактировано автором: 13 Июля, 2013 - 20:35:39)

 
 Top
armancho7777777 Супермодератор
Отправлено: 13 Июля, 2013 - 20:49:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function factorial(x){
  3.  
  4.         if(!x) return 1;
  5.  
  6.         var res = x * factorial(x - 1);
  7.        
  8.         document.write(res + " Hello<br>");
  9.        
  10.         return res;
  11. }
  12.  
 
 Top
stas0
Отправлено: 13 Июля, 2013 - 20:58:45
Post Id



Частый гость


Покинул форум
Сообщений всего: 186
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)

[+][+][+]


Выводит

2 Hello
NaN Hello
NaN Hello
 
 Top
armancho7777777 Супермодератор
Отправлено: 13 Июля, 2013 - 21:11:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Код, который я привёл ?
Не может быть.
http://jsfiddle[dot]net/LD5Af/1/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB