递归和迭代1递归和迭代编程语言闲话编程Contents递归和迭代 ............................................................................................. 1计算裴波拉切数列这是读《计算机程序的构造和解释》的笔记。递归和迭代计算裴波拉切数列裴波拉切数列是很简单的过程,其数学公式如下:使用递归非常容易解决,就是直接将这个公式翻译成计算机语言即可:(define (fib n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2))) ) ))这个递归算法虽然实现很简单,但却有比较大的性能问题,出现了不必要的计算。例如计算,其计算过程如下:其中就计算了三次。那么,如何使用迭代来计算呢?迭代的思想在于给定若干变量的初始值,不断根据规则进行计算来改变这些变量,最后进行次之后得到最终的结果。 递归和迭代2进行迭代通过次迭代变成这样实际上需要三个变量:初始值第一次迭代第次迭代那么,翻译成代码就是:(define (fib n) (fib_iter 1 0 n))(define (fib_iter a b i) (if (= i 0) b (fib_iter (+ a b) a (- i 1)) ))