Python隨記(7) 遞迴

2021-10-03 19:10:11 字數 2896 閱讀 2517

函式呼叫自身的行為

def

sum(n)

:if n <=0:

return

'sorry,must be >=1'

if n ==1:

return

1return n *

sum(n-1)

print

(sum

(100))

#求100 * 99 *98.。。。。。。*1

遞迴過程解析:遞迴分成兩部分,遞,歸。以上面的階乘為例,sum(3)>>3*sum(2) sum(2)>>2*sum(1) sum(1)==1 遞時不會直接計算出每乙個值然後相乘。 歸:從最底層開始回到呼叫者,1>> 1*2>> 1*2*3

def

digui

(n):

print

(n,'遞'

)if n>0:

digui

(n-1

)print

(n.'歸'

)digui(3

)>

>

>

3 遞 2 遞 1 遞 0 歸 1 歸 2 歸 3 歸

def

get_num

(num)

:if num >2:

get_num

(num -1)

else

:print

(num)

get_num(4

)# 輸出結果為 2

'''解析一下:加了else後,首先**區有兩個分支,

在num>

2時,執行會有遞迴,當n=

4 是開闢一層空間;

n=3時開闢一層空間,此時 get_num(2

) 再開闢乙個空間,

當它從上往下執行過程中,在他本層空間遇到if num>

2 不成立,所以走分支 else,直接列印出來;

此時**還沒結束,回到上一層空間,num=

3, num>

2 已經進入了if 不會走else,

num=

4 也不會走else,所以這兩層空間沒有值輸出!

'''————————————————

4.0by-/

/blog.csdn.net/storyfull/article/details/

102671946

(找了好多文章,就上面這個寫的詳細,我就不一點一點搬運了。。好好研究加深見解吧。。。腦部鏈結)

python對遞迴深度是有限制的,但是如果要寫爬蟲,就要自行設定遞迴的深度限制了improt sys sys.setrecursionlimit(10000)#將深度設定為10000層。但是遞迴的話每次呼叫函式都要進行棧操作,非常消耗時間和記憶體。遞迴用在妙處自然簡潔

def

max_value

(ls,rs)

:for l in ls:

iftype

(l)== list:

rs =

max_value

(l,rs)

continue

if l > rs:

rs = l

return rs

defmax_val

(ls)

: rs =

max_value

(ls,0)

return rs

if __name__ ==

'__main__'

: list1 =[4

,1,3

,11,[

1,6,

8],[

[1,3

],[6

,15]]

] list2 =[5

,[5,

7,9,

2],3

,[2,

6,16]

,9] result1 =

max_val

(list1)

result2 =

max_val

(list2)

print

('list1:%r\nmax:%s\nlist2:%r\nmax:%s'

%(list1,result1,list2,result2)

————————————————

..」的原創文章,遵循 cc

4.0by-/

/blog.csdn.net/qq_42279077/article/details/

82897118

這個遞迴進子列表的例子就很棒啊,以後在檔案系統時也會用到遞迴去進入子檔案。

4.

有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第乙個人大兩歲。最後問第乙個人,他說是10歲。請問第五個人多大?

def

years

(n):

if n ==1:

return

10else

:return

years

(n-1)+

2

斐波那契數列的遞迴問題:

def

fab(n)

:if n <1:

print

('輸入有誤!'

)return-1

elif n ==

1or n ==2:

return

1else

:return

ferber

(n-1)+

ferber

(n-2

)

python初學隨記

語言特點 開源 跨平台,擴充套件性強 類庫多 主流開發工具 pycharm 學習版本 python3.6.5 基礎 注釋用 基本資料型別 4種 整數 int 浮點數float 字串str 布林值bool true false 字典分支 if 表示式 elif 表示式 else 了解方法 input ...

python語法隨記

1 sample 序列a,n 功能 從序列a中隨機抽取n個元素,並將n個元素生以list形式返回。2 字元對應的unicode值 ord 你的字元 3 unicode對應的字元 chr 2034 4 map 方法func,序列1,序列2,功能 將序列中每個元素依次作為方法func的引數,返回 fun...

python開篇隨記

usr bin env python coding utf 8 變數名只能由字母 數字和下劃線組合 變數名不能以數字開頭 關鍵字不能自己用來宣告變數 常量一般是用全大寫表示,其值不應該做修改 name1 aaa name2 name1 name1 bbb 在記憶體中,變數name1指向記憶體中的 a...