Я пытался понять хвостовую рекурсию в схеме, и я с трудом понимая, что происходит в движении к примеру, используя хвост рекурсию Фибоначчи ...Объяснение хвостовой рекурсии Фибоначчи по схеме?
если это код хвостовую рекурсию, или итерационные Фибоначчи:
(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))))
я могу по существу понять, что происходит в каждой строке за исключением здесь:
(fib-iter 1 0 n))
, что на самом деле происходит в этой строке? Я не могу найти объяснения нигде. Я новичок в Scheme, и синтаксис до сих пор довольно запутан.
Или может кто-нибудь объяснить, что происходит в каждой строке? это мое основное понимание, но я не уверен, если я прав:
(define (fib n) ;;define the function fib and variable n
(fib-iter 1 0 n)) ;;?? no idea
(define (fib-iter a b count) ;;define function fib-iter, variables a, b and count
(if (= count 0) ;;if the count is equal to 0,
b ;;return b
(fib-iter (+ a b) a (- count 1)))) ;;recursively calling function fib-iter with 3 parameters (a+b), a and (count - 1)
спасибо!
«(определить (FIB п), определим функцию выдумку и переменную п» не совсем так - это * определяет функцию 'fib', которая принимает один параметр под названием' n' *. Аналогично, '(define (fib-iter ...' определяет функцию 'fib-iter', которая принимает 3 параметра, 1-й по имени' a', 2nd «' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' поле с тремя слотами (в этом случае). Затем каждый вызов '(fib-iter xyz)' просто помещает три значения 'xyz' в три слота frame и (re) начинает выполнение. –