我正在尝试扩展一个简单的斐波那契函数,我需要多次使用每个项的值。所以,我想我会使用 let
来保留这些值。但是,我没有从函数中得到我认为应该得到的东西。
这是原始的 fib
函数:
(define (fib n)
(if (< n 2)
n
(+ (fib (- n 1)) (fib (- n 2)))))
这是我尝试做同样的事情,但是使用 let
:
(define (fib-with-let n)
(if (< n 2)
0
(let ((f1 (fib-with-let (- n 1)))
(f2 (fib-with-let (- n 2))))
(+ f1 f2))))
结果:
> (fib 10)
55
> (fib-with-let 10)
0
谢谢!
最佳答案
你打错了:
(if (< n 2)
0
...)
你的意思是 n
。
关于recursion - 试图理解方案中的 "let",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6376985/