python中的遞迴怎麼寫 python遞迴怎麼寫

2021-10-19 01:49:55 字數 1497 閱讀 5678

程式呼叫自身的程式設計技巧稱為遞迴( recursion)。

遞迴做為一種演算法在程式語言中廣泛應用。 乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的**量。

遞迴的能力在於用有限的語句來定義物件的無限集合。一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。

2、遞迴的通俗理解

遞迴就是在函式內部呼叫自己的函式被稱之為遞迴。

(1)我們使用的詞典,本身就是遞迴,為了解釋乙個詞,需要使用更多的詞。當你查乙個詞,發現這個詞的解釋中某個詞仍然不懂,

於是你開始查這第二個詞,可惜,第二個詞裡仍然有不懂的詞,於是查第三個詞,這樣查下去,直到有乙個詞的解釋是你完全能

看懂的,那麼遞迴走到了盡頭,然後你開始後退,逐個明白之前查過的每乙個詞,最終,你明白了最開始那個詞的意思。

(2)乙個小朋友坐在第10排,他的作業本被小組長扔到了第1排,小朋友要拿回他的作業本,可以怎麼辦?他可以拍拍第9排小朋友,

說:「幫我拿第1排的本子」,而第9排的小朋友可以拍拍第8排小朋友,說:「幫我拿第1排的本子」...如此下去,訊息終於傳到了

第1排小朋友那裡,於是他把本子遞給第2排,第2排又遞給第3排...終於,本子到手啦!這就是遞迴,拍拍小朋友的背可以模擬函式

呼叫,而小朋友們都記得要傳訊息、送本子,是因為他們有記憶力,這可以模擬棧。

(3)乙個洋蔥是乙個帶著一層洋蔥皮的洋蔥。

4、最簡單的遞迴的例項# -*- coding:utf-8-*-

# 將 10不斷除以2,直至商為0,輸出這個過程中每次得到的商的值。

def recursion(n):

v = n//2 # 地板除,保留整數

print(v) # 每次求商,輸出商的值

if v==0:

''' 當商為0時,停止,返回done'''

return 'done'

v = recursion(v) # 遞迴呼叫,函式內自己呼叫自己

recursion(10) # 函式呼叫

輸出結果:5

5、遞迴的特點

通過以上的介紹,我們大致可以總結出遞迴的以下幾個特點:

(1)必須有乙個明確的結束條件;

(2)每次進入更深一層遞迴時,問題規模(計算量)相比上次遞迴都應有所減少;

(3)遞迴效率不高,遞迴層次過多會導致棧溢位(在計算機中,函式呼叫是通過棧(stack)這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位)。

關於遞迴還有兩個名詞,可以概括遞迴實現的過程:

回溯:則是在遇到終止條件,則從最後往回返一級一級的把值返回來,這叫回溯。

python負數怎麼寫 python中的負數為零

檢查 0 數字 在維基百科 ieee基本上確實定義了乙個負零 通過這個定義來達到所有目的 0.0 0.0 0 我同意aaronasterling,0.0和 0.0是不同的物件。使它們相等 等於運算子 可以確保在 中不引入細微的錯誤。想想a b c d a 3.4 b 4.4 c 0.0 d 0.0 ...

python呼叫自己寫的py檔案

假設有兩個py檔案,分別是test1.py和test2.py,需要完成的功能就是在test1檔案內呼叫test2檔案內的func test 函式。import test2 if name main test2.func x,y 如果只需要單個引數 from test2 import func if ...

python怎麼寫檔案 python標頭檔案怎麼寫

本文主要以python2為例。首先介紹一下python標頭檔案的程式設計風格,然後再給大家詳細介紹import部分的基本用法。這兩個部分就是python中標頭檔案的組成模組。程式設計風格 usr bin env python 在檔案頭部 第一行 加上 設定 python 直譯器 coding utf...