青蛙跳台阶(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; }