Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Работа рекурсии (https://javascript.ru/forum/misc/47799-rabota-rekursii.html)

maximillian 08.06.2014 01:28

Работа рекурсии
 
Доброго времени суток всем! Кто-нибудь может пожалуйста на пальцах объяснить как работает этот код... Не могу понять принцип рекурсии ...
Заранее спасибо :)

function sumTo(n) {
2
  if (n == 1) return 1;
3
  return n + sumTo(n-1);
4
}
5
 
6
alert( sumTo(100) );

cyber_ua 08.06.2014 01:45

maximillian,
function sumTo(n) {
2
  if (n == 1) return 1;// если n равно 1, вернуть 1
3
  return n + sumTo(n-1); // при первом вызове в  будет sumTo(100 - 1), после того как sumTo вызовет саму себя будет sumTo(99 - 1) и будет она вызывать у меньшеным на 1 числом, до тех пор пока оно не будет равно 1
4
}
5
 
6
alert( sumTo(100) );

Erolast 08.06.2014 09:10

Дополню: то есть, функция сложит все числа от одного до n.

maximillian 08.06.2014 15:38

cyber_ua,Erolast спасибо за информацию, как приеду домой, сяду и ещё раз постараюсь вникнуть :)

maximillian 08.06.2014 15:44

P.s А как функция складует числа ? Куда она записывает промежуточный результат ? Можете пожалуйста пошагово объяснить :) Получается она сначала как бы раскручивается, а потом обратно скручивается ? Не пойму в каком месте она складует числа ...

melky 08.06.2014 15:54

Цитата:

Сообщение от maximillian (Сообщение 315605)
P.s А как функция складует числа ? Куда она записывает промежуточный результат ? Можете пожалуйста пошагово объяснить :) Получается она сначала как бы раскручивается, а потом обратно скручивается ? Не пойму в каком месте она складует числа ...

да, скручивается\раскручивает я. эта самокрутка называется стек.


Часовой пояс GMT +3, время: 10:11.