Функция
f
определяется по правилу, чтоf(n) = n
еслиn < 3
иf(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3)
еслиn > 3
. Напишите процедуру, которая вычисляетf
посредством рекурсивного процесса. Напишите процедуру, которая вычисляетf
с помощью итеративного процесса.
Реализация его рекурсивно достаточно проста. Но я не мог понять, как это сделать итеративно. Я попытался сравнить с приведенным примером Фибоначчи, но я не знал, как использовать его в качестве аналогии. Поэтому я отказался (позор мне) и Гуглед за объяснение, и я нашел это:
(define (f n)
(if (< n 3)
n
(f-iter 2 1 0 n)))
(define (f-iter a b c count)
(if (< count 3)
a
(f-iter (+ a (* 2 b) (* 3 c))
a
b
(- count 1))))
После прочтения, я понимаю код и как он работает. Но то, что я не понимаю, - это процесс, необходимый для получения от рекурсивного определения функции к этому. Я не понимаю, как код мог сформироваться у кого-то руководителя.
Не могли бы вы рассказать о процессе мышления, который необходим для решения?