Я новичок в 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...:
Спасибо