目錄
遞迴函式
一種基本演算法
遞迴函式指的是: 自己呼叫自己的函式, 在函式體內部直接或間接的自己呼叫自己; 遞迴類似於大家中學練習過的數學歸納法;
每個遞迴函式必須包含兩個部分:
=> 終止條件
表示遞迴什麼時候結束; 一般用於返回值, 不再呼叫自己;
=> 遞迴步驟
把第n步的值和第n-1步相關聯;
遞迴函式由於會建立大量的函式物件, 過量的消耗記憶體和運算能力, 在處理大量資料時, 謹慎使用;
#測試遞迴函式基本原理
def test01():
print("test01")
test01() #如果這裡直接呼叫自己test01(),會不斷的開闢新的棧幀,導致棧空間滿,從而報錯,所以必須要有停止條件
print("########") #永遠列印不出來,先進後出,後進先出,第乙個開啟的方法,最後才執行完畢
def test02():
print("test02")
# test01();
def test03(n):
print("test03:",n)
if n == 0:
print("over")
else:
test03(n-1)
print("test03***:",n) #先進後出,後進先出,第乙個開啟的方法,最後才執行完畢
test03(5)
#用遞迴來計算階乘,分析幾何
def test04(n):
'''用遞迴來計算階乘'''
if n == 1: #終止條件
return 1
else:
return n*test04(n-1) #遞迴步驟
result = test04(6)
print(result) #720
輸出:d:\wwwroot\pyiteam\venv\scripts\python.exe d:/wwwroot/pyiteam/mypy01.py
test03: 5
test03: 4
test03: 3
test03: 2
test03: 1
test03: 0
over
test03***: 0
test03***: 1
test03***: 2
test03***: 3
test03***: 4
test03***: 5
720process finished with exit code 0
Python中簡單的遞迴演算法
可以遞迴的問題往往在大多數情況下都可以使用迴圈代替,並且迴圈的效率往往更高。但遞迴的 可讀性非常強,非常適合於效能要求不高的問題實現和後期 的維護。1 求階乘,階乘和冪級數是兩個最經典的遞迴函式。假設要計算數n的階乘,b的階乘的定義為n n 1 n 2 1,其中n必須為無符號整數 unsigned ...
遞迴函式 python中的漢諾塔遞迴演算法
遞迴函式 如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。def fact n if n 1 return 1return n fact n 1 首先我們要明確乙個概念,遞迴函式是從哪個函式開始執行之後就要返回哪個函式。每一次move都要從開頭進行計算,到n 1為 止。下面要不斷地返回move...
Python中的漢諾塔遞迴演算法
最近在學廖雪峰老師的python入門課程,到了遞迴這一節,漢諾塔的遞迴演算法讓我很是困惑,拜讀了一些前人的文章後終於開了竅,總結如下,也算是把自己的所思所想梳理一遍。遞迴的組成有兩部分,乙個是遞迴體,乙個是遞迴結束條件。其本質在於重複,因此找到了重複的內容就能推導出遞迴體。以漢諾塔為例,將三個柱子 ...