66 Python中的遞迴演算法和階乘

2021-10-04 11:19:52 字數 1328 閱讀 9149

目錄

遞迴函式

一種基本演算法

遞迴函式指的是: 自己呼叫自己的函式, 在函式體內部直接或間接的自己呼叫自己; 遞迴類似於大家中學練習過的數學歸納法;

每個遞迴函式必須包含兩個部分:

=> 終止條件

表示遞迴什麼時候結束; 一般用於返回值, 不再呼叫自己;

=> 遞迴步驟

把第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入門課程,到了遞迴這一節,漢諾塔的遞迴演算法讓我很是困惑,拜讀了一些前人的文章後終於開了竅,總結如下,也算是把自己的所思所想梳理一遍。遞迴的組成有兩部分,乙個是遞迴體,乙個是遞迴結束條件。其本質在於重複,因此找到了重複的內容就能推導出遞迴體。以漢諾塔為例,將三個柱子 ...