我是Scheme和函数式编程的新手。在内部函数中使用输入参数的方案
作为工作的一部分,我试图实现一个功能,这需要通过线第一n
Fibonacci数一数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...:
谢谢
谢谢你的详细回答,但我不允许使用'when'语句...有没有其他的方式呢? – Noam
我改变了答案。 – Renzo