"""
@author : 行初心
"""遞迴 要呼叫函式自身,都要進行壓棧,彈棧。資源消耗的問題
遞迴 要有正確的終止條件
遞迴有危險性
"""if x == 1:
return 1
else:
return x * f(x - 1)
"""step 1:先下去
f(5)=5*f(4)
f(4)=4*f(3)
f(3)=3*f(2)
f(2)=2*f(1)
f(1)=1 (return)
step 2:在逐層返回來
f(1)=1 (return)
f(2)=2*f(1)
f(3)=3*f(2)
f(4)=4*f(3)
f(5)=5*f(4)
最終,我們知道了f(5)的結果
"""def main():
print(f(5))
if __name__ == '__main__':
main()
/home/coder/anaconda3/envs/py37/bin/python /home/coder/pycharmprojects/basic/demo.py
120process finished with exit code 0
"""
@author : 行初心
"""# 要想往上走的話,資料結構與演算法必須要學習。
# 如果遇到優秀的老師,那麼資料結構與演算法是很好玩的知識。
def fab(n):
if n < 1:
print('輸入有誤')
return -1
elif n == 1 or n == 2:
return 1
else:
return fab(n - 1) + fab(n - 2)
def main():
result = fab(20)
print(result)
if __name__ == '__main__':
main()
/home/coder/anaconda3/envs/py37/bin/python /home/coder/pycharmprojects/basic/demo.py
6765
process finished with exit code 0
python具有開源、跨平台、解釋型、互動式等特性,值得學習。
python的設計哲學:優雅,明確,簡單。提倡用一種方法,最好是只有一種方法來做一件事。
**的書寫要遵守規範,這樣有助於溝通和理解。
每種語言都有獨特的思想,初學者需要轉變思維、踏實踐行、堅持積累。
Python3 遞迴函式
1.必須有乙個明確的結束條件 2.每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少 3.遞迴效率不高,遞迴層次過多會導致棧溢位 在計算機中,函式呼叫是通過棧 stack 這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,...
Python3 遞迴函式
在函式內部,可以呼叫其他函式。如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。def calc n print n if int n 2 0 return n return calc int n 2 calc 10 輸出 105 21遞迴特性 1.必須有乙個明確的結束條件,最多遞迴999次 2...
Python3 遞迴函式
1 def fat n 2 result 13 for i in range 2,n 1 4 result result i5 return result6 print fat 5 7 8 9 def digui x 10 if x 1 11 return 112 return x digui x ...