https://acm.hdu.edu.cn/showproblem.php?pid=2041
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
Input
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
Output
对于每个测试实例,请输出不同走法的数量
Sample
Inputcopy | Outputcopy |
---|---|
2 2 3 | 1 2 |
斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。斐波那契数列指的是这样一个数列:
0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711……
它的规律是:这个数列从第 3 项开始,每一项都等于前两项之和。
在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*),显然,斐波那契数列是一个线性递推数列。
#include <stdio.h>
int F(int n) //斐波那契数列函数 递归形式
{
if(n == 0) //初始化
return 0;
if(n == 1 || n == 2)
return 1;
return F(n-1) + F(n-2); //如果n != 1 && n != 2 进行递归运算
}
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n", F(n));
}
return 0;
}
#include <stdio.h>
int F(int M) //类似于斐波那契数列函数 递归形式
{
//初始化
if(M == 1)
return 0;
if(M== 2)
return 1;
if(M==3)
return 2;
return F(M-1) + F(M-2); //如果M>=4,进行递归运算
}
int main()
{
int M,n;
scanf("%d",&n);
while(n--)
{
scanf("%d",&M);
printf("%d\n", F(M));
}
return 0;
}