python-遞迴函式,嵌套函數

來源:互聯網
上載者:User

標籤:span   binary   其他   hang   一個   通過   遍曆   條件   效率   

 

遞迴函式:

在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞迴函式。

例:

def calc(n):    print(n)    if int(n/2) ==0:        return n    return calc(int(n/2)) calc(10)

案例:二分尋找

def BinarySearch(1,key):    low = 0    high = len(1)-1    i = 0    while (low <= high)        i = i+1        mid = (high + low)/2        if (1[mid] < key):            low = mid + 1        elif (1[mid] > key):            high = mid - 1        else:            print(‘use %d time(s)‘ % i)            return mid    return -1    

 

 

遞迴特性:

必須有一個明確的結束條件每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少遞迴效率不高,遞迴層次過多會導致棧溢出(在電腦中,函數調用是通過棧(stack)這種資料結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴調用的次數過多,會導致棧溢出)。

遞迴的作用:
遞迴做為一種演算法在程式設計語言中廣泛應用.是指函數/過程/子程式在運行過程式中直接或間接調用自身而產生的重入現象.
遞迴是一個函數在其定義中又直接或間接調用自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的代碼量。遞迴的能力在於用有限的語句來定義對象的無限集合。用遞迴思想寫出的程式往往十分簡潔易懂。 
  一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。 
注意: 
(1) 遞迴就是在過程或函數裡調用自身; 
(2) 在使用遞迴策略時,必須有一個明確的遞迴結束條件,稱為遞迴出口。
遞迴演算法一般用於解決三類問題:
(1)資料的定義是按遞迴定義的。(Fibonacci函數)
(2)問題解法按遞迴演算法實現。(回溯)
(3)資料的結構形式是按遞迴定義的。(樹的遍曆,圖的搜尋)

 

嵌套函數:

name = "yue" def change_name():    name = "yueyue"     def change_name2():        name = "yueyueyue"        print("列印",name)     change_name2() #調用內層函數    print("列印",name) change_name()print("列印",name)

這個就叫做嵌套調用,它是一個語言提供的程式設計的方法,也就是語言的特性。

 

python-遞迴函式,嵌套函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.