| 
 JavaScript Рекурсия Всем Доброго времени суток !  Только недавно начал изучать ЯваСкрипт. Читал про рекурсию Вот пример: 
function sumTo(n) {
  if (n == 1) return 1;
  return n + sumTo(n-1);
}
alert( sumTo(100) ); //5050
ретурн ведь возвращает значение обратно той функции которую вызывали, так почему когда функция доходит до значения 1 и она видит условие if: if (n == 1) return 1;она ведь должна возвратить 1 как написано по условию и тогда sumTo(100) будит равен 1 а не 5050. Приведу пример: 
function sumTo(n) {
	 return 1;
	}
alert( sumTo(4) );
Результат: 1 и не имеет значение какое число было в sumTo(число) Не могли бы вы объяснить как идёт процесс рекурсии пошагово, то есть всё подробно, куда retun передаёт значение, где хранятся значения когда функция запущена. | 
| 
 Ну во-первых писать в пределах функции более одного return это по меньшей мере признак дурного тона. Из-за этого возникает путаница. А во-вторых все верно, каждый вызов функции sumTo относится к предыдущему контексту, то есть образуется длинный ряд замыканий. В конце концов, когда рекурсия прерывается, попадая под условие выхода, все полученные ранее результаты выполнений всех итераций складываются. | 
| 
 DreamTheater Спасибо! Если у вас найдётся ссылочка по сабжу(мб в учебнике есть, я его весь не читал) буду очень рад! Просто хочется ещё более глубоко понимать данный вопрос, для созданий собственных функций такого типа. для меня просто это новая информация: все полученные ранее результаты выполнений всех итераций складываются. | 
| 
 Цитата: 
 Тут же для каждого вызова создается новый кадр на стеке. Цитата: 
 Цитата: 
 | 
| 
 Цитата: 
 Спасибо всем за помощь всё сало намного яснее ! | 
| 
 Цитата: 
 | 
| 
 Про один return на функцию это вы явно загнули. | 
| 
 немножко не из той оперы пример, но пусть будет 
var num = 0;
function inc() {
	return ++num;
}
alert( inc() + inc() + inc() );
 | 
| 
 Цитата: 
 nerv_, не понял | 
| 
 Цитата: 
 | 
| Часовой пояс GMT +3, время: 03:22. |