日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python函数递归年龄_Python学习笔记4-递归函数

發(fā)布時(shí)間:2024/9/19 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python函数递归年龄_Python学习笔记4-递归函数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一開(kāi)始知道這個(gè)遞歸函數(shù)的時(shí)候,我的內(nèi)心是崩潰的。。。

什么?還能自己調(diào)用自己?這是什么騷操作?

在數(shù)據(jù)結(jié)構(gòu)與算法里有專門提到過(guò)這個(gè)遞歸思想。

那究竟什么樣的問(wèn)題可以用遞歸來(lái)解決呢?

我總結(jié)了三個(gè)條件:

1. 一個(gè)問(wèn)題的解可以分解為幾個(gè)子問(wèn)題的解何為子問(wèn)題?子問(wèn)題就是數(shù)據(jù)規(guī)模更小的問(wèn)題。

2. 這個(gè)問(wèn)題與分解之后的子問(wèn)題,除了數(shù)據(jù)規(guī)模不同,求解思路完全一樣

3. 存在遞歸終止條件把問(wèn)題分解為子問(wèn)題,把子問(wèn)題再分解為子子問(wèn)題,一層一層分解下去,不能存在無(wú)限循環(huán),這就需要有終止條件。

哪一類問(wèn)題屬于遞歸的呢

比如問(wèn)小紅幾歲,他說(shuō)比小明大3歲,然后問(wèn)小明幾歲,小明說(shuō)比小麗小四歲,問(wèn)小麗幾歲,小麗說(shuō)10歲。

這樣一來(lái),我們就可以由小麗知道小明的年齡,從而知道小紅的年齡。

小麗的年齡就是一個(gè)終止條件,而小紅幾歲這個(gè)問(wèn)題,要拆解為小明幾歲和小麗幾歲兩個(gè)方面。

一般遞歸

def normal_recursion(n):

if n == 1:

return 1

else:

return n + normal_recursion(n-1)

執(zhí)行:

normal_recursion(5)

5 + normal_recursion(4)

5 + 4 + normal_recursion(3)

5 + 4 + 3 + normal_recursion(2)

5 + 4 + 3 + 2 + normal_recursion(1)

5 + 4 + 3 + 3

5 + 4 + 6

5 + 10

15

尾遞歸

尾遞歸基于函數(shù)的尾調(diào)用, 每一級(jí)調(diào)用直接返回函數(shù)的返回值

更新調(diào)用棧,而不用創(chuàng)建新的調(diào)用棧, 類似迭代的實(shí)現(xiàn),時(shí)間和空間上均優(yōu)化了一般遞歸!

def tail_recursion(n, total=0):

if n == 0:

return total

else:

return tail_recursion(n-1, total+n)

執(zhí)行:

tail_recursion(5)

tail_recursion(4, 5)

tail_recursion(3, 9)

tail_recursion(2, 12)

tail_recursion(1, 14)

tail_recursion(0, 15)

15

總結(jié)

以上是生活随笔為你收集整理的python函数递归年龄_Python学习笔记4-递归函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。