#m=n = 10
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,句容企業(yè)網(wǎng)站建設,句容品牌網(wǎng)站建設,網(wǎng)站定制,句容網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,句容網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
m=n=int(input("Please enter n :"))
def recursion(n,v):
v = v+n
n = n-1;
if n==0:
#''' 當n=0時,停止
print("1+2+3+...+%d = "%m,v)
return v
v = recursion(n,v) # 遞歸調(diào)用,函數(shù)內(nèi)自己調(diào)用自己
recursion(n,v=0)# 函數(shù)調(diào)用
可以看出來的是,該題可以用斐波那契數(shù)列解決。
樓梯一共有n層,每次只能走1層或者2層,而要走到最終的n層。不是從n-1或者就是n-2來的。
F(1) = 1
F(2) = 2
F(n) = F(n-1) + F(n-2) (n=3)
這是遞歸寫法,但是會導致棧溢出。在計算機中,函數(shù)的調(diào)用是通過棧進行實現(xiàn)的,如果遞歸調(diào)用的次數(shù)過多,就會導致棧溢出。
針對這種情況就要使用方法二,改成非遞歸函數(shù)。
將遞歸進行改寫,實現(xiàn)循環(huán)就不會導致棧溢出
def Sum(m): #函數(shù)返回兩個值:遞歸次數(shù),所求的值 if m==1:return 1,m return 1+Sum(m-1)[0],m+Sum(m-1)[1]cishu=Sum(10)[0] print cishu def Sum(m,n=1): ... if m==1:return n,m ... return n,m+Sum(m-1,n+1)[1] print Sum(10)[0] 10 print Sum(5)[0] 5