函式呼叫自身的行為
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...