青蛙跳台阶问题
问:一只青蛙一次可以跳1层台阶一次也可以跳2层台阶,问青蛙跳到第n层台阶一共有多少种跳法?
解:
思路:n=1 1种可能
n=2 2种可能
n=3 3种可能
n=4 5种可能
n=5 8种可能
…
f(n)=f(n-1)+f(n-2)
解法一:递归
#include<stdio.h>
int step(int n)
{
if (n <= 2)
{
return n;
}
return step(n - 1) + step(n - 2);
}
int main()
{
int a = 5;
printf("%d\n", step(a));
return 0;
}
解法二:循环
#include<stdio.h>
int Step1(int n)
{
if (n <= 2)
{
return n;
}
int a = 1, b = 2, c;
int i = 2;
while (i < n)
{
c = a + b;
a = b;
b = c;
i++;
}
return c;
}
int main()
{
int x = 5;
printf("%d\n", Step1(x));
return 0;
}