斐波那契数列:
斐波那契数列是指的这样的一个数列,从第3项开始,以后每一项都等于前两项之和。写成递推公式即
//斐波那契数列:已知前两项可以算出第任意项
//1 1 2 3 5 8 13 21 34......
#include<stdio.h>
int Fb(int x)
{
if (x<= 2)
return 1;
else(x>2)
return (Fb(x-1)+Fb(x-2));
}
int main()
{
int n = 0 ;
scanf("%d\n",&n);
int ret = Fb(n);
printf("%d",ret);
return 0;
}
青蛙跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
解题关键: 由于青蛙一次可以跳1级或者2级
反过来——> 第n阶种跳法 = 第n - 1 阶种跳法+ 第n - 2阶种跳法
#include<stdio.h>
int Fb2(int x)
{
if (x == 1)
return 1;
if (x == 2)
return 2;
if (x >= 2)
return(Fb2(x - 1) + Fb2(x - 2));
}
int main()
{
int n = 0;
scanf_s("%d", &n);
int ret = Fb2(n);
printf("%d", ret);
return 0;
}
汉诺塔问题(汉诺塔问题_百度百科)
解题关键: 关键中心柱
层数:2
先将第一块放到中心柱上 ,再将第二块放到C柱上
总次数= 1 * 2 +1 = 3
层数:3
先将前两块放到中心柱上,再将最长块放到C柱
总次数 = 2*(1*2+1)+ 1=7
当为n
总次数 F(n) =2*F(n-1) + 1
#include<stdio.h>
int Fb3(int x)
{
if (x == 1)
return 1;
if (x >= 2)
return (2 * Fb3(x-1)+1);
}
int main()
{
int n = 0;
scanf_s("%d", &n);
int ret = Fb3(n);
printf("%d", ret);
return 0;
}