Компонентный Паскаль/Рекурсия на примере факториала: различия между версиями
Содержимое удалено Содержимое добавлено
Fantom78 (обсуждение | вклад) |
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
||
Строка 3:
==Понятие о рекурсии==
Рекурсия это такая рекурсия, которая в рекурсии подразумевает рекурсию, которая продолжает вызывать рекурсию, которая... Рекурсия -- это обращение к себе. Причём, это обращение может быть настолько многоуровневым, что смотря на самую дальнюю точку -- просто не видишь её конец. Очень не плохо показана идея рекурсии в фильме "[[w:Начало (фильм, 2010)|Начало]]" с Леонардо Ди Каприо. Если вы его не могли посмотреть, то ещё можно понять что такое рекурсия из детского не очень доброго стишка, но, возможно, как любят говорить киношники -- "основанного на реальных событиях":
<
У попа была собака. Он её любил.
Она съела кусок мяса -- он её убил.
Строка 11:
В землю закопал и на могиле написал:
У попа была собака....
</syntaxhighlight>
И так до бесконечности. Несчастная собака... Несчастный поп...
Строка 20:
Hello11.odc
<
MODULE TestHello11;
(* это программа на языке
Строка 55:
BEGIN
END TestHello11.
</syntaxhighlight>
Обратите внимание, что в этом примере можно было использовать только одну переменную для вычисления факториала, если бы вывод в "Log.Int(f)" выполнялся через вызов "Log.Int(GetFactorial(n))". Соответственно, строку выше можно было бы удалить и отказаться от объявления переменной "f".
Вывод программы представлен ниже:
<
компилируется "TestHello11" 220 0
Введите основание факториала:
Строка 70:
Достигнуто дно
f( 6) = 720
</syntaxhighlight>
Как видно из вывода переменная "n" с каждым вызовом действительно уменьшалась на "1", и это была настоящая рекурсия. )
|