函数
f
由f(n) = n
ifn < 3
和f(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3)
if的规则定义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))))
阅读后,我理解了代码及其工作原理。但是我不明白的是从函数的递归定义到这个需要的过程。我不明白代码是如何在某人的脑海中形成的。
你能解释一下解决问题所需的思考过程吗?