目录
一.问题概述
一只青蛙可以一次跳一个台阶,也可以一次跳两次台阶,如果青蛙要跳上n节台阶,请问共有多少种跳法。
二.模型建立
三.问题分析
对于这个相对比较麻烦的问题,我们初步的想法是先从简单的n=1,2,3开始对这个问题的过程做一个大致的了解。
对于n=1,2,3这三种情况我们很容易得到好像他的跳法等于台阶的数量但是如果再有耐心一点的话,你会发现n=4时他的跳法为5种。
那么这该怎么理解呢,我们可以把n=4这样想,青蛙第一次跳的时候,无非就是跳一节,或者跳两节,那么我们分别来看,当青蛙第一次跳一节时:
则如图,此时青蛙面前仍有3节台阶而前面我们已将分析过三节台阶为3种跳法,再来分析青蛙第一次跳两节台阶,
如图,此时它的面前仍有两节台阶,而两节台阶为2种跳法。
则当n=4时,一共有3+2=5种跳法。
四.总结规律
通过上面的分析,我们好像可以得到n节台阶的跳法等于n-1的跳法加上n-2种跳法,这可以继续进行验证,如n=5时实际上有8种跳法,满足上面的规律,其他n的验证同理,则规律被我们找到了。
五.用C语言进行n节台阶的编写
#include<stdio.h>
int fib(int n)
{
if(n==1)
return 1;
else if(n==2)
return 2;
else
return fib(n-1)+fib(n-2);
}
int main()
{int n=0;
scanf("%d",&n);
int ret=fib(n);
printf("%d",ret);
return 0;
}
最后在运行一下,进一步的验证:
六.总结
在初学C语言时,我们碰到一些看起来比较麻烦的题,通常背后都有逻辑,当你进行编写的时候,不知道该怎么写了,大概率是你对这个题的逻辑没有搞清楚,或者对C语言一些语句的使用还比较陌生,我们可以在一张纸上,对题目进行分析找到他的逻辑,在进行大量练习,相信你的C语言一定会有很大进步的。