遞迴的深度理解

2021-09-28 17:33:09 字數 1261 閱讀 3528

1、遞迴的理解

舉個例子:

當你在電影院看電影,由於太黑你們都就近找了位置直接坐下,但你需要直到這是第幾排,於是你就會問前面的兄弟,然後等待回答,前排的兄弟可能不知道,於是又去問了他前排的兄弟並等待回答…就這樣直到問道有乙個兄弟知道到自己的排數,遞的過程就完成了,知道排數的這個兄弟就會把他的排數傳給後排問他的人,這下後排的人就接收到了前排的結果,通過計算就知道了自己的排數,然後再把自己的排數告訴他後排的人…直到你最後通過前排的結果算出自己的位置。

通過這個例子來總結幾個點

2、**過程分析

//遞迴求n!,加上日誌列印(遞迴的除錯)

public

static

void

main

(string[

] args)

public

static

intfactor

(int n)

int ret = n*

factor

(n-1);

system.out.

println

("函式結束,n = "

+n +「ret = 」+ret);

return ret;

}

//執行結果

函式開始,n = 4

函式開始,n = 3

函式開始,n = 2

函式開始,n = 1

函式結束,n =1 ret = 1

函式結束,n =2 ret = 2

函式結束,n =3 ret = 6

函式結束,n =4 ret = 24

3、遞迴解決問題

一般當同時滿足以下三個條件就可以用遞迴來解決

乙個問題可以分解成幾個子問題

就是乙個大的資料規模問題可以分解成資料規模更小的問題,就比如你要知道自己在那一排就分為了很多個前一排在哪一排的問題。

這個問題與分解後的子問題,除了資料規模不同,求解思路完全一樣。

比如你求解自己在哪一排的思路和前面一排的人求解的思路一樣

存在遞迴終止條件

當問題分解下去後不能存在無限迴圈,要有終止條件,比如當第一排的人不需要再問任何人就知道自己的排數,就是終止條件。

4、如何編寫遞迴**呢

分為兩步

另外挖兩個坑,記憶體對齊和棧溢位。

Python的遞迴深度

runtimeerror maximum recursion depth exceeded while calling a python object 大意是呼叫 python 物件時超出最大深度限制 python語言預設的遞迴深度是很有限的,當遞迴深度超過值的時候,就會引發runtimeerror...

遞迴的理解

對於遞迴問題,一定要明確的一點是,初始呼叫該函式時的輸入是什麼樣的 遞迴能夠奏效的前提是,問題的規模一定是減少的,或者更為嚴謹地說,問題一定是朝著遞迴結束的條件執行的 遞迴函式的第乙個要執行的就是 if 判斷,也即每進入一次遞迴,都要首先判斷是否到達遞迴的結束,n 0 其次還要明晰遞迴函式的功能,是...

遞迴的理解

本篇文章只要是實現最大公倍數的遞迴實現方法。最大公倍數是指兩個數能夠被一組數同時整除,其中最大的那個數就叫做最大公倍數,求解最大公倍數這裡主要說兩個想法,其實就是將複雜的問題簡化逐步簡化到乙個很小的問題,然後求得答案。假設有兩個數 252和105 252 21 12 105 21 5 252 105...