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 ...