题目大意:输入一个整数t,表示测试用例数。接着输入一个整数M表示第M级台阶。求到达M级台阶的走法共有多少种
解题思路:
1、递推的题目,前面几个数为1,1,2,3,第五个可以这样考虑:有些走法是和到第四个一样的,只是最后加了一步,这样f(5)=f(4)+x,x表示其他的走法,到第五级时不是走两步就是一步,一步刚才已经考虑过了,就是f(4),而最后是走两步的是在第三级开始的,到第三级的走法为f(3),所以f(5)=f(4)+f(3);后面的类似。所以是斐波那契数列f(n)=f(n-1)+f(n-2)
2、对于递归和递推。有一种不成熟的说法就是:
递归就是自己调用自己;
递推是从头向后推;
代码如下:
/*
* 2041_1.cpp
*
* Created on: 2013年8月12日
* Author: Administrator
*/
#include <stdio.h>
#include <string.h>
int main(){
int t;
scanf("%d",&t);
int fib[41];
memset(fib,0,sizeof(fib));
fib[1] = 1;
fib[2] = 1;
int i ;
for(i = 3 ; i<= 40 ; ++i){
fib[i] = fib[i-1] + fib[i-2];
}
while(t--){
int n;
scanf("%d",&n);
printf("%d\n",fib[n]);
}
}

本文介绍了一个经典的计算机科学问题:通过递推算法计算到达指定台阶的所有可能路径数量。该问题实质上是斐波那契数列的一个应用实例。文章详细解释了递推算法的工作原理,并给出了C语言实现的源代码。
5618

被折叠的 条评论
为什么被折叠?



