Chr*_*egg 2 recursion scheme fibonacci let
我正在尝试扩展一个简单的斐波那契函数,我需要多次使用每个项的值.所以,我想我会let用来保持价值观.但是,我没有得到我认为我应该从功能中得到的东西.
这是原始fib功能:
(define (fib n)
(if (< n 2)
n
(+ (fib (- n 1)) (fib (- n 2)))))
Run Code Online (Sandbox Code Playgroud)
这是我尝试做同样的事情,但是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))))
Run Code Online (Sandbox Code Playgroud)
结果:
> (fib 10)
55
> (fib-with-let 10)
0
Run Code Online (Sandbox Code Playgroud)
谢谢!
您错误输入了基本案例.在第一个版本中你有:
(if (< n 2)
n
Run Code Online (Sandbox Code Playgroud)
但是在你的后一个版本中你写道:
(if (< n 2)
0
Run Code Online (Sandbox Code Playgroud)
所以只需0改为n.