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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的递归

發(fā)布時間:2025/7/25 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的递归 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、遞歸的特點

遞歸算法是一種直接或間接調(diào)用自身算法的過程,在計算機編程中,遞歸算法對解決一大類問題是十分,它往往使算法的描述簡潔而且易于理解。

遞歸算法解決問題的特點:

(1)遞歸就是在過程或函數(shù)里調(diào)用自身

(2)在使用遞歸策略時,必須有一個明確的遞歸結(jié)束條件,稱為遞歸出口。

(3)遞歸算法解題通常顯得很簡潔,但遞歸算法解題的運行效率較低,所以一般不提倡用遞歸算法設(shè)計程序。

(4)在遞歸調(diào)用的過程中系統(tǒng)為每一層的返回點、局部量等開辟了棧來存儲,遞歸次數(shù)過多容易造成棧溢出等。

2、遞歸的要求

遞歸算法所體現(xiàn)的“重復(fù)”一般有三個要求:

(1)每次調(diào)用在規(guī)模上都有所縮小(通常是減半)

(2)是相鄰兩次重復(fù)之間有緊密的聯(lián)系,前一次要為后一次做準備(通常前一次的輸出作為后一次的輸入)

(3)在問題的規(guī)模極小時必須用直接給出解答而不再進行遞歸調(diào)用,因而每次遞歸調(diào)用都是有條件的(以規(guī)模位達到直接解答的大小為條件)無條件遞歸調(diào)用將會成為死循環(huán)而不能正常結(jié)束。

3、遞歸實例

#遞歸就是函數(shù)自己調(diào)用自己 # count = 0 # def abc(): # global count # count+=1 # print('abc') # print(count) # return abc()#函數(shù)自己調(diào)用自己,遞歸一定要有結(jié)束條件,輸入錯誤的時候,可以繼續(xù)往下輸入,會重新調(diào)用 # #循環(huán)效率比遞歸效率高 # abc()#報錯,超過最大的遞歸次數(shù),不同于死循環(huán),最大限制次數(shù),最多999

?

#遞歸實現(xiàn)n個斐波那契數(shù)列: def fibonacci(n):if n == 0:return 0elif n == 1:return 1else:return fibonacci(n-1) + fibonacci(n-2) print([fibonacci(x) for x in range(10)])# 輸出: # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] #返回n以內(nèi)所有數(shù)的階乘的和: def fn(n):if n == 1:return 1else:return n * fn(n - 1) print(sum(map(fn, range(1, 10))))#輸出:409113

?

#計算1到100之間相加之和;通過循環(huán)和遞歸兩種方式實現(xiàn)def sum_cycle(n):''' to n,The sum function'''sum = 0for i in range(1,n + 1):sum += ireturn sumdef sum_recu(n):''' to n,The sum function'''if n > 0:return n + sum_recu(n - 1) #調(diào)用函數(shù)自身else:return 0 print("循環(huán)求和:",sum_cycle(100)) print("遞歸求和:",sum_recu(100))#輸出結(jié)果: # 循環(huán)求和: 5050 # 遞歸求和: 5050 def func1(n):"打印100以內(nèi)的奇數(shù)"if n <= 100:print(n)n += 2return func1(n) func1(1) #求一個數(shù)的質(zhì)因數(shù) def zhiyinshu(n):for x in range(2, int(n/2+1)):if n % x == 0:l.append(x)return zhiyinshu(n/x)l.append(int(n))print(l) l = [] zhiyinshu(100)

?

轉(zhuǎn)載于:https://www.cnblogs.com/blueteer/p/10097072.html

總結(jié)

以上是生活随笔為你收集整理的python的递归的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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