關於遞迴演算法的幾個例子(C語言)

2021-08-07 04:21:57 字數 2289 閱讀 1472

1.遞迴演算法的定義:

2.遞迴與迭代的優劣

eg1:斐波那契數列:斐波那契數列(fibonacci sequence),又稱**分割數列、因數學家列昂納多·斐波那契(leonardoda fibonacci)以兔子繁殖為例子而引入,故又稱為「兔子數列」,指的是這樣乙個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞迴的方法定義:f(0)=1,f(1)=1, f(n)=f(n-1)+f(n-2)(n>=2,n∈n*)

1/*2

斐波那契數列 迭代實現 (列印出前40個)3*/

4 #include 5

intmain()

14 printf("\n"

);15

16return0;

1718 }

1/*2

斐波那契數列 遞迴實現 (列印出前40個)3*/

4 #include 5/*6

int fb(int n)else if(n == 1)else14}

15*/

1617

int fb(int

n)else

2324}25

2627

intmain()

32 printf("\n"

);33

34return0;

35 }

eg2:階乘:亦即n!=1×2×3×...×n。階乘亦可以遞迴方式定義:0!=1,n!=(n-1)!×n。

1/*2

遞迴實現階乘

3遞迴方式定義:0!=1,n!=(n-1)!×n。4*/

解題思路:

eg4:二分法查詢

1/*2

二分法查詢:迭代實現3*/

4 #include 5

intmain();

7int

input, low, high, mid;

8 low = 0

;9 high = 9

;10 mid = (low + high) / 2

;11 scanf("

%d", &input);

1213

while(input !=arr[mid])else21}

22 printf("

%d ",mid);/*

輸出要查詢數字在陣列中的下標

*/23

return0;

2425 }

1/*2

二分法查詢:遞迴實現3*/

45 #include 6

int fun(int low, int high, int input, int

arr)else

else19}

2021}22

intmain();

24int

input, low, high;

25 low = 0

;26 high = 9

;27 scanf("

%d", &input);

28 printf("

%d \n

",fun(low, high, input, arr));/*

輸出要查詢數字在陣列中的下標

*/29

return0;

30 }

關於遞迴演算法的幾個例子(C語言)

1.遞迴演算法的定義 2.遞迴與迭代的優劣 eg1 斐波那契數列 斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 2...

06 5 關於指標的幾個例子

1 實現乙個方法 多個返回值 的效果 返回數字的個位 十位 百位。基於本程式的一些基本的c語法 為取餘運算子,用於把它前面的整數值或表示式除以 其後面的整數值或表示式,結果為不能被後面的整數或表達 式整除的最小整數,它後面的數值應該為大於1的正整數。如 表中所示的 13 7 就表示13 除以7餘6。...

關於記憶體分配的幾個例子

1.include include include void getmemory char p void test int main void getmemory char p void test void 分析 在vs2010上編譯可以通過,但是不能執行。個人理解 執行getmemory 時,p是...