遞迴的特點:
遞迴演算法是一種直接或間接呼叫自身演算法的過程,簡潔而且易於理解
遞迴演算法解決特點:
--遞迴就是在過程或函式裡呼叫自身
--在使用遞迴策略時,必須有乙個明確的遞迴結束條件,稱為遞迴出口
--遞迴演算法解題很簡潔,但運算效率較低,所以不提倡用遞迴演算法設計程式
--在遞迴呼叫的過程中系統為每一層的返回點,區域性量等開闢了棧來儲存,遞迴次數過多容易造成棧溢位等.
遞迴的要求:
**每次呼叫在規模上都有所縮小(通常是減半)
**是相鄰兩次重複之間有緊密的聯絡,前一次要為後一次做準備(通常前一次的輸出作為後一次的輸入)
**在問題的規模極小時必須用直接給出解答而不再進行遞迴呼叫,因而每次遞迴呼叫都是有條件的,無條件遞迴呼叫將會成為死迴圈而不能正常結束
def recursion(i): #定義函式
(i)
if i/2 > 1: #
判斷遞迴條件,退出
re = recursion(i/2) #
遞迴函式自身
print('
返回值:
',re)
print('
上層遞迴值:
',i)
return i #
返回值recursion(10)
#執行原理:首先執行函式傳參10給函式,列印10,判斷條件滿足,遞迴
#函式引數值為(10/2)5,列印i的值5,等遞迴到1.25時,判斷條件不滿
#足後,才列印上層遞迴的值,此時遞迴的值為1.25,return遞迴最後一
#層的值1.25,退出最後一層遞迴,繼續一層層退出遞迴,最後返回最上層
#遞迴值結束函式。
105.0
2.51.25上層遞迴值: 1.25返回值: 1.25上層遞迴值: 2.5返回值: 2.5上層遞迴值: 5.0返回值: 5.0上層遞迴值: 10複製**
斐波那契數列:就是前兩個數的和為後乙個數的值(0,1,1,2,3,5,8,13.........)
複製**
deffoo(arg1,arg2,stop):
if arg1 ==0:
(arg1,arg2)
arg3 = arg1 +arg2
(arg1,arg2,arg3)
if arg3 < stop: #
判斷套件不滿足時退出遞迴
foo(arg2,arg3,stop) #
遞迴函式,傳送引數arg2,arg3,stop給arg1,arg2,stop
foo(0,1,50)
0 10 1 1
1 1 2
1 2 3
2 3 5
3 5 8
5 8 13
8 13 21
13 21 34
21 34 55
def數列foo(arg1,arg2,stop):
if arg1 ==0:
(arg1,arg2)
arg3 = arg1 +arg2
(arg1,arg2,arg3)
if arg3 < stop: #
判斷套件不滿足時退出遞迴
foo(arg2,arg3,stop) #
遞迴函式,傳送引數arg2,arg3,stop給arg1,arg2,stop
foo(0,1,50)
0 10 1 1
1 1 2
1 2 3
2 3 5
3 5 8
5 8 13
8 13 21
13 21 34
21 34 55
python函式之遞迴函式
在計算機程式設計裡,遞迴指的是乙個過程 函式不斷引用自身,直到引用的物件已知。1 自己呼叫自己 2 必須有乙個明確的結束條件 優點 缺點 計算n的階乘 def factorial n if n 1 return 1 fac n factorial n 1 return fac n 5print 的階...
Python之遞迴函式
如果乙個函式在函式內部呼叫函式本身,那麼這個函式就是遞迴函式。例如用遞迴函式計算階乘。deffact n if n 1 return 1.return n fact n 1 fact 1 1 fact 7 5040 fact 999 traceback most recent call last f...
python之函式遞迴
函式的遞迴 函式呼叫自身的程式設計技巧稱為遞迴 遞迴函式的特點 特點 特點 函式內部的 是相同的,只是針對引數不同,處理的結果不同當引數滿足乙個條件時,函式不再執行 示例 def sum numbers num print num 遞迴的出口很重要,否則會出現死迴圈 遞迴案例 計算數字累加 需求 定...