遞歸的思想主要是能夠重復某些動作,比如簡單的階乘,次方,回溯中的八皇后,數獨,還有漢諾塔,分形。
由于堆棧的機制,一般的遞歸可以保留某些變量在歷史狀態中,比如你提到的returnx*power...,但是某些或許龐大的問題或者是深度過大的問題就需要盡量避免遞歸,因為可能會棧溢出。還有一個
問題是~python不支持尾遞歸優化!!!!所以~還是盡量避免遞歸的出現。
defpower(x,n)
ifn<0:
return1
returnx*power(x,n-1)
power(3,3)
3*power(3,2)
3*(3*power(3,1))
3*(3*(3*power(3,0)))
3*(3*(3*1))這里n=0,return1
3*(3*3)
3*9
27
當函數形參n=0的時候,開始回退~直到第一次調用power結束。