计算n!
递归:
(define (factorial n)
(if (= n 1)
1
(* n (factorial (- n 1)))))
循环:
(define (factorial n)
(fact-iter 1 1 n))
(define (fact-iter product counter max-count)
(if (> counter max-count)
product
(fact-iter (* counter product)
(+ counter 1)
递归形成了一个计算链,计算过程先膨胀再收缩,解释器需要记住所有计算步骤的上下文
循环不会膨胀,计算上下文只和当前的参数相关

本文对比了递归和循环两种方法在计算阶乘时的性能和上下文处理方式,阐述了递归膨胀与循环不膨胀的特点。
560

被折叠的 条评论
为什么被折叠?



