遞迴演算法簡單應用

2021-08-19 18:37:03 字數 1875 閱讀 9916

1.遞迴和非遞迴分別實現求第n個斐波那契數。 

斐波那契數:

亦稱之為斐波那契數列(義大利語: successione di fibonacci),又稱**分割數列、費波那西數列、費波拿契數、費氏數列,指的是這樣乙個數列:1、1、2、3、5、8、13、21、……在數學上,斐波那契數列以如下被以遞迴的方法定義:f0=0,f1=1,fn=fn-1+fn-2(n>=2,n∈n*),用文字來說,就是斐波那契數列列由 0 和 1 開始,之後的斐波那契數列係數就由之前的兩數相加。

c**實現:

#include

#include

//用遞迴求第n個斐波那契數

int fib_1(int n)

}//用迭代求第n個斐波那契數

int fib_2(int n)

return c;

}int main()

2.編寫乙個函式實現n^k,使用遞迴實現 

思路: n*k

= n*n*k-1

= n*n*n*k-2

= n*n*n*n*k-3..

.c**實現:

#include

#include

#pragma warning (disable:4996)

int power(int _n, int _k)

else

}int main()

3. 寫乙個遞迴函式digitsum(n),輸入乙個非負整數,返回組成它的數字之和,例如,呼叫digitsum(1729),則應該返回1+7+2+9,它的和是19 

思路:①取n的各位上的數字

②使n去掉各位上的數而形成乙個新的數m

③n = m

重複①到③的過程直到n變為乙個小於10的數;然後把每次第一步所取的數加起來做為返回值

c**實現:

#include

#include

#pragma warning (disable:4996)

int digitsum(int n)

else

}int main()

4. 編寫乙個函式reverse_string(char * string)(遞迴實現) 

實現:將引數字串中的字元反向排列。 

要求:不能使用c函式庫中的字串操作函式。 

#include

#include

void reverse_string(char *string)

else

printf("%c", *string);

}int main()

5.遞迴和非遞迴分別實現strlen

#include

#include

//用非遞迴實現求字串長度

int strlen(char *p)

return count;

}//遞迴實現求字串長度

int _strlen(char *p)

else

}int main()

6.遞迴和非遞迴分別實現求n的階乘

#include

#include

#pragma warning (disable:4996)

//用非遞迴實現求n的階乘

int factorial(int n)

return tmp;

}//遞迴實現求求n的階乘

int _factorial(int n)

else

}int main()

7.遞迴方式實現列印乙個整數的每一位 

#include

#include

#pragma warning (disable:4996)

int _int(int n)

else

}int main()

遞迴演算法應用

遞迴就是程式在執行的過程中呼叫自己 用自己定義自己 遞迴的三要素 邊界條件 遞迴前進段 遞迴返回段 遞迴和棧 遞迴和棧有這緊密的聯絡,大多數編譯器都是使用棧來實現遞迴的,當呼叫方法時,編譯器會把這個方法的所有引數和返回位址都壓入棧中,然後把控制轉移給這個方法。當方法返回時,這些值退棧。引數消失了,並...

遞迴演算法的應用

提起漢諾塔,大家都會想起遞迴程式,大家都知道遞迴程式的實現是用棧來實現的,但是,有些程式是需要用到棧,但是我們還要編寫一棧的資料結構,挺麻煩的,所以,用遞迴程式實現起來是很簡單的!1.學習資料結構時,講到迷宮演算法,是用棧實現的,如果用遞迴演算法實現會更簡單的.掃雷程式也是實行遞迴搜尋的.對於迷宮程...

遞迴演算法簡單題

最大公約數 題目內容 輸入兩個整數m,n,用遞迴演算法實現計算兩個數的最大公約數。輸入格式 輸入兩個整數m,n 輸出格式 最大公約數 輸入樣例 12,40 回車 輸出樣例 4 回車 時間限制 500ms記憶體限制 32000kb 理解最大公約數演算法!include int n intm void ...