青蛙跳台阶(C语言)
青蛙跳台阶(C语言)
青蛙跳台阶问题,在函数的递归一章中会有提到,不少同学会感觉有些难以下手,下面就让学长带你了解其中的奥秘。
一只青蛙一次可以跳1个台阶或2个台阶,总共有n个台阶,问共有多少种上法?
我们可以从简到难的想,一个台阶有一种上法,俩个台阶有两种上法,三个台阶有三种上法,四个台阶有五种上法……不难发现这有些像Fibonacci数列。
$$ Fib(n)=1,n=1 $$
$$ Fib(n)=2,n=2 $$
$$ Fib(n)=Fib(n-1)+Fib(n-2),n>2 $$
由此,代码如下:
#include<stdio.h>
int main()
{
int n=0;
scanf("%d",&n);//输入台阶数
if(n<4)//n小于4,上法就是台阶数
{
printf("%d
",n);
}
else
{//a,b为Fib(3),Fib(4)
int a=2;int b=3;int t=0;
for(int i=3;i<n;i++)
{
t=a+b;
a=b;
b=t;
}
printf("%d
",t);
}
return 0;
}
