recursion完成了iteration滑蚯,但邏輯清晰苍狰,有以下問(wèn)題:
- recursion 由stack完成嗅定,會(huì)溢出
- solution: compute argument then input to recursion func
like this, 輸入recursion的參數(shù)已經(jīng)計(jì)算
return fact_iter(num - 1, num * product)
===> fact_iter(5, 1)
===> fact_iter(4, 5)
===> fact_iter(3, 20)
===> fact_iter(2, 60)
===> fact_iter(1, 120)
===> 120
- 那現(xiàn)在總體應(yīng)該寫(xiě)成:
def fact(n):
return fact_iter(n, 1)
#
def fact_iter(num, product):
if num == 1:
return product
return fact_iter(num - 1, num * product)
經(jīng)典漢諾塔
- n-1右移到b
- 移動(dòng)第n 回移前n-1
- 交換參數(shù)位置 變換移動(dòng)like abc---> acb 帶一個(gè)bac