斐波那契方案(Fibonacci in Scheme)

2019-07-19 04:04发布

我想了解方案递归和我有一个硬的时间做了它的试运行,例如一个简单的Fibonacci数问题,有人可以击穿的步骤,其中的添加剂发生?

(define (fib n)
  (if (<= n 2)
      1
      (+ (fib (- n 1)) (fib (- n 2)))))

Answer 1:

如果您使用的球拍,因为你的标签注明,那么你有一个内置的步进。

进入程序到DrRacket,并单击步骤在右上角的菜单:

第一步http://f.cl.ly/items/341k1X2c44422e220T3I/Screen%20Shot%202013-02-01%20at%208.00.27%20PM.png

然后步进窗口将打开。 点击步骤一遍又一遍,你可以通过程序的执行行走。

一步一步http://f.cl.ly/items/153A28283W263z421Y12/Screen%20Shot%202013-02-01%20at%208.02.51%20PM.png

如果你想步数更便于管理一点,挑低于10多家为执行追查。



Answer 2:

在伪代码中, fib(n) = n <= 2 -> 1 ; else -> fib(n-1) + fib(n-2) fib(n) = n <= 2 -> 1 ; else -> fib(n-1) + fib(n-2) =>(1 1 2 3 5 ...)。

例如, fib(5)被减小为:

fib(5)
fib(4) + fib(3)
(fib(3) + fib(2)) + fib(3)
((fib(2) + fib(1)) + fib(2)) + fib(3)
((1 + 1) + fib(2)) + fib(3)
(2 + fib(2)) + fib(3)
(2 + 1) + fib(3)
3 + fib(3)
3 + (fib(2) + fib(1))
3 + (1 + 1)
3 + 2
5


Answer 3:

这是打印Fibonacci序列成员从1到n个在一个新行的码。 Importnat要注意,这是使用两个非常简单的辅助功能。 希望这可以帮助。

;Prints to the screen all the member up to the nth member in the fibonaci sequence (define (fibo n)
 (let ((i 1))
  (if (= n 1)
      (display 1)
      (fiboHelp i n))))

;Helper function that presents Fibonaci sequence from bottom index i until upper index n
(define (fiboHelp i n)
  (if (= i n)
      (display(fiboMember i))
      (begin
        (display (fiboMember i))
        (newline)
        (fiboHelp (+ i 1)n)))) 

;Returns the nth member of the Fibonaci sequence
(define (fiboMember n)
  (if (<= n 2)
      (+ 1 0)
      (+ (fiboMember(- n 1))(fiboMember(- n 2)))))


文章来源: Fibonacci in Scheme