python用遞歸函數(shù)求1+2+3+4+5的值的方法:
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、黃山區(qū)網(wǎng)絡(luò)推廣、微信平臺(tái)小程序開發(fā)、黃山區(qū)網(wǎng)絡(luò)營(yíng)銷、黃山區(qū)企業(yè)策劃、黃山區(qū)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供黃山區(qū)建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
1、寫出臨界條件
2、找這一次和上一次的關(guān)系
3、假設(shè)當(dāng)前函數(shù)已經(jīng)能用,調(diào)用自身計(jì)算上一次的結(jié)果,再求出本次的結(jié)果
代碼實(shí)現(xiàn)如下:
首先我們要了解一下什么是遞歸。
遞歸法,遞歸法就是利用上一個(gè)或者上幾個(gè)狀態(tài)來求取當(dāng)前狀態(tài)的值(個(gè)人看法)。也可以說成函數(shù)自己調(diào)用自己的一種解決問題的策略。因此遞歸法通常是依托函數(shù)來實(shí)現(xiàn)的,遞歸函數(shù)總是會(huì)有一個(gè)出口,我們?cè)诮鉀Q遞歸問題時(shí),只需要找出遞歸的關(guān)系式以及遞歸函數(shù)的出口(這兩個(gè)可以說是遞歸函數(shù)的核心了)。下面我將在這里舉求斐波那契值的例子帶領(lǐng)著大家具體的實(shí)踐一下遞歸法。
很顯然遞歸函數(shù)的遞推式是:fib(n) = fib(n-1)+fib(n-2)。
遞歸函數(shù)的出口是當(dāng)n為1時(shí)返回1,當(dāng)n為0時(shí)返回0。
最后遞歸函數(shù)的核心代碼就可以寫出了:
然后總的代碼就是:
具體思路如下:
語句 return fib(n-1)+fib(n-2)的意思就是向前求斐波那契值,直到n-1=1,n-2=0
因?yàn)橹挥械?個(gè)和第0個(gè)斐波那契值是確定的
例:
當(dāng)n=3時(shí)
第一次調(diào)用函數(shù)fib會(huì)執(zhí)行第三條語句(因?yàn)閚1)這樣求回返回fib(2)+fib(1)
第二次調(diào)用函數(shù)時(shí),因?yàn)?1所有會(huì)返回fib(1)+fib(0);因?yàn)?不大于1,所以調(diào)用函數(shù)時(shí)
會(huì)執(zhí)行第二條語句返回1值。
第三次調(diào)用函數(shù),會(huì)執(zhí)行第一和第二條語句,依次返回0和1從而求得fib(2)
fib(3)=fib(2)+fib(1)
fib(2)=fib(1)+fib(0)
即fib(3)=fib(1)+fib(0)+fib(1)=2*fib(1)+fib(0)
lambda不好寫,寫了前兩個(gè),把-2改為-7,改成-7后,我試過x必須大于4。-2時(shí)x可以從1開始
#遞歸
def?power(n,?x):
if?abs(1/pow(n,?x))abs(pow(10,?-2)):
return?0#回歸條件
else:
m?=?n?+?1#遞歸因子
if(n%2==1):
return?1/pow(n,?x)+power(m,?x)#求和奇正
else:
return?-1/pow(n,?x)+power(m,?x)#求和偶負(fù)
def?power2(n,?x):
sum?=?0
while(1/pow(n,x)abs(pow(10,?-2))):
if?(n?%?2?==?1):
sum+=?1?/?pow(n,?x)
else:
sum+=-1?/?pow(n,?x)
n?+=?1??#?遞增
return?sum
if?__name__?==?"__main__":
x?=?input("請(qǐng)輸入冪數(shù)")
x?=?int(x)
n?=?1
sum?=?power(n,?x)
print(sum)
n=1
sum?=?power2(n,?x)
print(sum)