【发布时间】:2017-08-25 19:09:50
【问题描述】:
我是 Scheme 和函数式编程的新手。
作为练习的一部分,我尝试实现一个函数,该函数接受一个数字 n 并首先逐行打印 n 斐波那契数
问题是当程序到达递归调用时,它无法识别n,所以我收到合约违规错误。
通过浏览网络,我认为我需要以某种方式使用 let 函数,但我不确定如何。
代码如下:
(define fibo (lambda (n)
(if (= n 1)
1
(if (= n 2)
(begin
(display "1")
(newline)
1)
(begin
(display
(+ (fibo (- n 1)) (fibo (- n 2))))
)))))
我得到的错误是:
contract violation
expected: number?
given: #<void>
argument position: 1st
other arguments...:
谢谢
【问题讨论】:
标签: functional-programming scheme let