python函式之遞迴
阿新 • • 發佈:2018-11-01
遞迴:自己呼叫自己
無限遞迴:和死迴圈不一樣
避免無限遞迴---遞迴收斂條件
遞迴應用於難題---思想(思路)
遞迴:效率低,佔資源
能用遞迴的一定能用迴圈
解決階乘:(把大問題拆分成小問題)解決大問題的思路和小問題思路完全一樣,則可以是用遞迴的思想
def jc(n):
if n==1:
return 1
return n*jc(n-1)
n=int(input('請輸入一個整數:'))
print(jc(n))
# 斐波那契數列
def f(n): # 前兩項之和 ---第n項 ==(n-2)+(n-1) 1 1 2 3 5 3:4 1:4-2 2:4-1
if n<3:
return 1
else:
return f(n-2)+f(n-1)
for i in range(1,13):
print(f(i))
漢諾塔問題
def h(cong,dao,jiezhu,n):
if n==1:
print('%s--->%s'%(cong,dao))
return None
else:
#n-1從A--C+B
h(cong,jiezhu,dao,n-1)
#1個從A--B
print('%s--->%s' % (cong, dao))
#n-1從C--B+A
h(jiezhu,dao,cong,n-1)
h('A','B','C',3)