recursion - 试图理解方案中的 "let"

标签 recursion scheme fibonacci let

我正在尝试扩展一个简单的斐波那契函数,我需要多次使用每个项的值。所以,我想我会使用 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/

相关文章:

functional-programming - 有什么方法可以进行基于示例的编程吗?

python - 斐波那契数列的递归

带有 Integral 类型类的 Haskell 斐波那契列表

Python递归函数似乎丢失了一些变量值

performance - 为什么要使用递归?

java - 检查两棵树是否相同

scheme - 在Scheme : bad idea?中实现 "Pythonic"映射

recursion - 不知道如何解决 SICP 练习 1.11

c - C 中的早期欧拉问题问题 - 为什么我得到输出 "nan"?

c++ - 无限循环与无限递归。两者都未定义吗?