遞迴的一點理解和舉例

2021-07-05 16:27:45 字數 696 閱讀 7333

當我們把乙個問題劃分為幾個子問題,而子問題在邏輯上可以相同處理的時候,我們採用遞迴的方法。比如說,求乙個正整數n的階乘。注意到,當n>=1時,n!=n*(n-1)!,這就是一種遞迴關係。用**可以如下描述:

int factorial(int n)

下面是乙個老師上課時候舉的乙個例子,當大家普遍認為很簡單的時候,我卻寫不出來,原因還是我對遞迴的理解不夠深刻,感覺有些挫敗。越敗越勇,記錄下來!

轉換為遞迴可以有多種形式,

**1:

int fun(int a, int n)

**2:複雜度o(n)

int fun(int a, int n)

**3:

注意到**2中遞迴的部分有重複,比如說fun(a,n/2)*fun(a,n/2),其實只算前面一部分就可以了,用乙個變數把這個值儲存起來,然後就減少了乙個遞迴,這裡其實有一點減治的思想,這裡的複雜度是o(log  n)**如下:

int fun(int a, int n)

else

}

不斷積累,不斷進步!!!

對遞迴函式的一點小理解

對於遞迴函式,大家都很熟悉了,對於解析一些複雜資料結構方面,能夠使 非常簡潔,明了。從我的理解來說,遞迴函式一般效率比較低,而且自身特點導致的限制也不少 1.效率低 乙個非常簡單的例子數數吧,從1數到1m。對於迴圈實現的 遞迴實現 對於迴圈實現,函式相當於 對於遞迴實現,相當於 對於第一種實現,不需...

遞迴的一點思考

廢話不說,直接上 searchtree delete int x,searchtree t else if t left null 沒有兒子的情況也包含了,因為t right 為null else else if x t element t right delete x,t right else t...

對equals和 的一點理解

概述 簡單的來說,equals是比較內容,是比較位址值 詳細 記憶體可以分為堆記憶體和棧記憶體,簡單的理解一般棧中主要存放一些基本型別的變數 int,short,long,byte,float,double,boolean,char 和物件控制代碼 物件位址值 而堆記憶體一般存放具體的物件控制代碼內...