**青蛙跳台阶问题**
青蛙跳台阶,一次一个台阶或者一次跳两个台阶,问跳n个台阶有多少次跳法。
先找规律
画图找规律
我们可以看出当台阶数小于等于2时,跳法次数就是台阶数
当台阶数大于3时,跳法次数就是前两个台阶数跳法相加。
得出函数
n<=2 f(a) = n
n>2 f(a) = f(n-1)+f(n-2)
递归法(不建议,如果台阶数值太大,计算速度会很慢)
int g_Jump(int x)
{
if (x<3)
{
return x;//台阶数小于3时,跳法就是台阶数
}
return g_Jump(x - 1) + g_Jump(x - 2);//大于等于3时该跳法就是前一个台阶的跳法加上第倒数第二的跳法之和。
}
循环法
第三个数等于前两个数相加,以此类推赋值
c = a + b;
a = b;
b = c
从3开始到n结束开始遍历这个循环,最终返回的c就是第n台阶的跳法。
int g_Jump(int n)
{
if (n <3)
{
return n;//台阶数小于3时,跳法就是台阶数
}
int a = 1;
int b = 2;
int c = 0;
for (int i = 3; i < n+1; i++)
{
c = a + b;
a = b;
b = c;
}
return c;
}