@Yonghwa
121

Нахождение чисел Фибоначчи на scheme?

Что делает последняя строчка?
Не совсем понимаю, зачем там
a
после первых скобок.

(define (fib n)
(fib-iter 1 0 n))
(define (fib-iter a b count)
(if (= count 0)
b
(fib-iter (+ a b) a (- count 1))))
  • Вопрос задан
  • 574 просмотра
Пригласить эксперта
Ответы на вопрос 1
у тебя в третьей строке: define (fib-iter a b count)
функция fib-iter определена как функция 3 аргументов : i элемента, i-1 элемента и счетчика, по которому определяется окончание вызова рекурсии.

в последней строчка она как раз и вызывается с тремя аргументами:
первый аргумент: (+ a b)
второй аргумент: a
третий аргумент: (- count 1)

то есть в последней строке функция вызывает саму себя
подставляя вместо a сумму a и b
вместо b элемент a
и передает третьим аргументом счетчик уменьшенный на 1
....
и пока счетчик не станет 0 - так и будет вызывать саму себя, уменьшая счетчик

как только счетчик станет 0 - рекурсия остановится - последний элемент будет вычислен - он и вернется в результат... хотя почему они возвращают b ? наверное a нужно возвращать? :-)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы