Философские аспекты рекурсии
Как же следует вести разработку рекурсивного алгоритма, " не вспоминая о прошлом" и " не заглядывая в будущее" . Опираясь на метод математической индукции можно сформулировать следующие правила :
-рекурсивная функция разрабатывается как обобщенный шаг процесса, который вызывается в произвольных начальных условиях и который приводит к следующему шагу в некоторых новых условиях ;
-обобщенные начальные условия шага - формальные параметры функции ;
-начальные условия следующего шага - фактические параметры рекурсивного вызова ;
- рекурсивная функция должна проверять условия завершения рекурсии, при которых следующий шаг процесса не выполняется ;
-локальными переменными функции должны быть объявлены все переменные, которые имеют отношение к протеканию текущего шага процесса.
И последнее. В Нагорной проповеди Нового Завета Иисус высказал одну из заповедей блаженства : будьте как птицы небесные, не заботьтесь о завтрашнем дне, пусть он заботится сам о себе. Это ни в коей мере не означает - живите " сегодняшним днем" , а после нас - хоть потоп. Наоборот. Если хочешь всю жизнь прожить в благодати, будь достоин сегодняшнего для, не объясняй своих слабостей прошлым, не уповай на исправление сегодняшних ошибок в будущем. Сосредоточься на сегодняшнем дне, и тогда цель в будущем будет достигнута сама собой. То же самое - и в проектировании рекурсивной функции : не думай о результате, сосредоточь внимание на текущем шаге рекурсии, если ее " сегодняшний" вызов корректен и все твои действия приводят к такому же корректному вызову ее " завтра" , то цель рано или поздно будет достигнута сама собой.