關于n!求解: 1.線性遞歸 ??? (define?(factorial?n)
??(if?(=?n?1)
??????1
??????(*?n?(factorial?(-?n?1))))) 如圖所示的線性的膨脹再線性的縮減,就為線性遞歸.
2.迭代 ???  (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)
?????????????????max-count)))
注:試驗(factorial 10000),遞歸堆棧溢出,而迭代則可以運行.
|