遞迴的通俗理解:遞迴就是在函式內部呼叫自己的函式被稱之為遞迴
def
recursion
(n):
v = n//
2# 地板除,保留整數
print
(v)# 每次求商,輸出商的值
if v ==0:
''' 當商為0時,停止,返回done'''
return
'done'
v = recursion(v)
# 遞迴呼叫,函式內自己呼叫自己
recursion(10)
# 函式呼叫
執行結果:52
10
1、必須有乙個明確的結束條件
2、每次進入更深一層遞迴時,問題規模(計算量)相比上次遞迴都應有所減少
3、遞迴效率不高,遞迴層次過多會導致棧溢位(在計算機中,函式呼叫是通過棧(stack)這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位)
1.遞迴求階乘之和
1!+2!+3!+4!+5!+…+n!
def
factorial
(n):
if n ==1:
return n # 階乘為1的時候,結果為1,返回結果並退出
v = n*factorial(n-1)
return v # 返回結果並退出
sum=
0for i in
range(1
,6):
print
(i)sum
=sum
+factorial(i)
# 函式呼叫
print
(sum
)
執行結果:12
345階乘之和:153
2.遞迴推斐波那契數列
1,1,2,3,5,8,13,21,34,55,試判斷數列第十五個數是哪個?
def
fabonacci
(n):
if n <=2:
return
1 n = fabonacci(n-1)
+ fabonacci(n-2)
return n
print
("%d"
% fabonacci(15)
)
執行結果:
610
3.使用遞迴方法讓字串翻轉
def
rvs(s)
:if s =="":
return s
else
:return rvs(s[1:
])+s[0
]print
(rvs(
"12345"
))
執行結果:
54321
``
python基礎 遞迴
迭代 deffactorial n result 1 for i in range 2,n 1 result i return result factorial 1 1 factorial 5 120 factorial 10 3628800 遞迴 deffactorial n if n 1 ret...
python 基礎 模組 遞迴 )
模組 是乙個命名空間,也是乙個模組物件 補充 容器 資料的封裝 函式 語句的封裝 類 方法和屬性的封裝 含義 模組是乙個包含所有你定義的函式和變數的檔案,其字尾名是.py。模組可以被別的程式引入,以使用該模組中的函式等功能。這也是使用 python 標準庫的方法。模組就是程式 作用 1封裝 2實現 ...
Python基礎 遞迴函式
通俗一點來說在函式的內部,直接去呼叫其他函式的方式叫做函式的巢狀.但是,如果這個函式呼叫的是自身呢?這個樣子的函式自身就屬於遞迴函式 經典例項 階乘自身就能用遞迴函式來表達出來 1 1 2 2 1 3 3 2 1 n n n 1 2 1以上是簡單直接說明了階乘的表達,接下來至二級用函式來進行直接表達...