#define _crt_secure_no_warnings
#include
#include
//青蛙跳台問題:青蛙只能跳1個或2個台階
intqinwa
(int n)
return
(qinwa
(n -1)
+qinwa
(n -2)
);//倒著想這個問題,如果青蛙向上第n階台階,有從n-1跳乙個台階和從n-2跳兩個
//台階到達,所以跳n個台階共有qinwa(n-1)+qinwa(n-2)種方法;
}//**青蛙跳台問題:假設有n個台階,青蛙可以跳1、2、3....n個台階
intbtqinwa
(int n)
if(n ==
1|| n ==2)
/*f(0)=1表示一次跳完n個台階
f(1) = 1
f(2) = 2
f(3) = f(3 - 1) + f(3 - 2) + f(3 - 3);跳3個台階,第一次跳1個台階,剩下2個台階有f(2)種方法;第二次跳2個台階,
剩下1個台階有f(1),種方法;第三次,跳3個台階;所以共有f(2)+f(1)+f(0)=2+1+1=4
...以此類推
f(n - 1) = f((n - 1) - 1) + f((n - 1) - 2) + ... + f((n - 1) - (n - 1)) = f(n - 2) + f(n - 3) + ... + f(1)=f(1)
f(n) = f(n - 1) + f(n - 2) + f(n - 3)... + f(0) = f(n - 1) + f(n - 1) = 2 * f(n - 1)
*/return2*
btqinwa
(n -1)
;}//漢諾塔問題
int tag =0;
//記錄移動次數
void
move
(int n,
char a,
char c)
//n記錄移動的是幾號圓盤
void
hanoi
(int n,
char a,
char b,
char c)
else
}//母牛生小牛問題
intmniu
(int year)
if(year ==
1||year==
2||year==3)
return
mniu
(year -3)
+mniu
(year -1)
;//mniu(year - 3)代表year的3年前成熟的母牛數量,mniu(year - 1)代表year的前1年牛的數量
}int
main()
斐波拉契數列 漢諾塔,青蛙跳台階
斐波拉契數列 漢諾塔,青蛙跳台階 的演算法實現 一.斐波那契數列 1,1,2,3,5,8,13,21,34 f n 0,1,f n 1 f n 2 n 0n 1 n 2遞迴解法 效率很低 public function fibonacci1 n if n 1 return fibonacci1 n ...
C 語言基礎實現青蛙跳台階和漢諾塔問題
目錄 乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法 遇見題目我們可以在紙上先動手畫畫,把最簡單的幾種方式列出來,作比較,找規律。按照上面 可以從跳法次數,過程,或者兩者結合找規律 1.從跳法次數分析 1 遞迴 include www.cppcns....
青蛙跳台階及其變種型別(遞迴思想)
題目 青蛙的最後一跳可以分為兩種情況 第一種是最後一跳只跳了乙個台階 第二種是最後一跳只跳了兩個台階。最後一跳,不會影響前面的跳法總數 這句話的意思是 假如有n個台階,跳法總數為f n 通過上面分析可知,f n 由兩部分跳法組成 第一種是最後只能跳乙個台階,也就是前面跳了n 1個台階。那麼對於這種情...