實例
通常被用於解釋遞迴的程式是計算階乘。以下計算階乘的Scheme程式不是尾端遞迴,而只是一般遞迴: Cite book
編著: Harold Abelson and Gerald Jay Sussman with Julie Sussman
title=Structure and Interpretation of Computer Programs
location=Cambridge, MA
出版: MIT Press
date=1996 |ISBN=0-262-01153-0
時間: 2011
(define (factorial n)
(if (=n 1)
1
(* n (factorial (- n 1)))))
</source> 因此,如果呼叫factorial時的參數n足夠大,這一程式會出現堆疊溢位。然而,如果將同一程式寫作尾端遞迴,按Scheme的標準將不會出現溢位:
(define (factorial n)
(define (iter product counter)
(if (> counter n)
product
(iter (* counter product)
(+ counter 1))))
(iter 1 1))
在第二個程式中,注意iter函式直接返回其遞迴呼叫,而沒有對其進行運算。因此,這是一個尾端遞迴。