關于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),遞歸堆棧溢出,而迭代則可以運行.
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),遞歸堆棧溢出,而迭代則可以運行.