Python之函數遞歸與迭代


函數遞歸:

  定義:程序調用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設計語言中廣泛應用。 一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。遞歸的能力在於用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。

用遞歸方式求階乘:

def count(n):
    '''計算n的階乘'''
    if n==1 or n==0:
        return 1
    else:
        return n*count(n-1)

k=input('請輸入一個整數') #k=4
res=count(k) 
print(res)
#24

尾遞歸優化:

  尾遞歸是指,在函數返回的時候,調用自身本身,並且,return語句不能包含表達式。這樣,編譯器或者解釋器就可以把尾遞歸做優化,使遞歸本身無論調用多少次,都只占用一個棧幀,不會出現棧溢出的情況。

def count(n,res=1):
    if n==1 or n==0:
        return res
    return count(n-1,n*res)

print(count(4))
#24

 

函數迭代:

  定義:迭代是重復反饋過程的活動,其目的通常是為了逼近所需目標或結果。每一次對過程的重復稱為一次“迭代”,而每一次迭代得到的結果會作為下一次迭代的初始值。

用迭代方式求階乘:

def co(n):
    '''求n的階乘'''
    s=1
    for i in range(1,n):
        s*=i
    return s

co(4)
#24

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM