Показать сообщение отдельно
  #17 (permalink)  
Старый 02.04.2014, 02:41
Новичок на форуме
Отправить личное сообщение для muzima Посмотреть профиль Найти все сообщения от muzima
 
Регистрация: 02.04.2014
Сообщений: 1

РАссмотрим действие программы в рамках 4 шагов
<script>
function sum(n) {
	  if(n == 1)												
		return 1;
	  else 
	 	  return (n + sum(n-1)); 
		  
		  //шаг 4.    sum(4) = sum(3) + 4 = ???    Компьютер хочет решить sum(4),но для того чтобы его решить, нужно вызвать ту же функцию, но  в шаге 3(sum3),
		  //шаг 3.sum(3) = sum(2) + 3 = 6     но для этого надо вызывать ту же функцию  в шаге 2 (sum2)
		  //шаг 2.sum(2) = sum(1) + 2 = 3    , на шаге один зеркало в зеркале заканчивается, так как решение шага один  однозначно указано и является 1( мы четко указали что sum(1) = 1 и никаких функций, чтобы его решить не нужно вызывать)
		  //, Итак, чтобы подсчитать результат 10, нужно решить функции со всеми n . Как зеркало в зеркале до определенного момента программа решает функции, одну рядом с другой(как бы одну вложенную в другую).Решив все шаги(вызвав все функции) до шага 1 компьютер возвращается к шагу 4 и выдает результат sum(4) = 10. Если бы sum(1) не был определен однозначно - зеркало в зеркале было бы бесконечно. 
		  //теперь программа смогла решить, что sum(4) = sum(3) + 4 = 10 				 		
		   
		  		  
	}
	alert( sum(4) ); 
	
</script>

Последний раз редактировалось muzima, 02.04.2014 в 02:46.
Ответить с цитированием