資料結構 遞迴

2021-10-25 03:10:24 字數 1702 閱讀 6281

c++版(清華鄧俊輝版)

整理書本習題,啊啊啊,習題集還沒到,就只能做書上的題。

loving to learn, loving to share.

遞迴演算法就是直接或間接呼叫自身。遞迴細分還可以分為線性遞迴,二分遞迴等。

個人理解就是,「大題小做」,將大問題拆分成若干個相似的小問題,大篇幅的減少**,同時提高**的可讀性。

優點:1.思維簡單

2. **簡潔

缺點:1.呼叫自身,效率低,時間慢

2.遞迴中很多計算都是重複的,由於其本質是把乙個問題分解成兩個或者多個小問題,多個小問題存在相互重疊的部分,則存在重複計算,如fibonacci斐波那契數列的遞迴實現。->效率

3.呼叫棧可能會溢位,其實每一次函式呼叫會在記憶體棧中分配空間,而每個程序的棧的容量是有限的,當呼叫的層次太多時,就會超出棧的容量,從而導致棧溢位。->效能

#include"stdafx.h"

#include

#include

//strlen()

using namespace std;

char str[

1000];

int i, j =1;

void

inverse

(int len, char s)

//導倒置字元陣列

}int main()

#include

using namespace std;

void

reverse

(int*

a, int lo, int hi)

//定義函式

}void

reverse

(int*

a, int n)

int main()

; cout <<

"the reversed array is :"

;for

(int i =

0; i <

sizeof

(a)/

sizeof

(int)

; i++

)system

("pause");

return0;

}

#include

using namespace std;

const int n

=1000

;int a[n]

;int sum

(int a

, int lo, int hi)

int main()

cout <<

sum(a,

0, n -1)

<< endl;

return0;

}

題目描述:

斐波那契數列,又稱**分割數列,指的是這樣乙個數列:0、1、1、2、3、5、8、13、21、……在數學上,斐波納契數列以如下被以遞迴的方法定義:f0=0,f1=1,fn=f(n-1)+f(n-2)(n>=2,n∈n*)。 現在我們要求數列的第n項。

#include "stdafx.h"

#include

using namespace std;

int fib

(int n)

int main()

資料 結構 遞迴

遞迴不一定非要像斐波拉契數列一樣在return中呼叫函式 遞迴的結束條件就是初始條件值 通常的方法將遞迴呼叫放在if語句中 n!通過遞迴實現 常用方法還是通過while實現 def jiecheng n if n 0 return 1 else sum n jiecheng n 1 右邊只有階乘表示...

資料結構 遞迴

所謂遞迴,就是在乙個函式,過程,或者資料結構的內部,又直接或間接出現定義本身的應用。在以下三種情況中,常常使用遞迴。比如階乘函式,我們能夠將其分解成幾個小問題來求解,比如求5!我們可以先求4!想求4!先求3!這樣一步步使問題簡化的方法,稱之為分治法。採取分治法求解,需要滿足下面三個條件 1.能夠將乙...

資料結構 遞迴

最近開始學習王爭老師的 資料結構與演算法之美 通過總結再加上自己的思考的形式記錄這門課程,文章主要作為學習歷程的記錄。遞迴是一種非常高效 簡潔的編碼技巧,一種應用非常廣泛的演算法,比如dfs深度優先搜尋 前中後序二叉樹遍歷等都是使用遞迴。基本上所有的遞迴問題都可以用遞推公式來表示。以尋找電影排數為例...