Code:
; linear recursion
(define (factorial n)
(if (= n 1)
1
(* n (factorial (- n 1)))))
; tail recusive:
; linear iterative process:
(define (alt-factorial n [counter 1] [product 1]
(if (> counter n)
product
(alt-factorial n (+ counter 1) (* product counter)))))
(* n (factorial (- n 1)))
此return语句将递归调用与n相乘,而此return语句:(alt-factorial n (+ counter 1) (* product counter))
可以在计数器和乘积变量的帮助下将所有计算结果放入递归调用中。这是什么使它成为一条尾声,这就是全部吗?使用编译器进行优化以在下一次调用中仅使用返回值,是否使用变量并不重要?抱歉,如果这个问题分散了,我很难理解这个概念。