题目:
题目描述
小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?
输入描述:
输入包含一个整数n (1 ≤ n ≤ 30)
输出描述:
输出一个整数,即小乐乐可以走的方法数。

我们先来分析一下这个题目:
注意小乐乐一次可以走一阶台阶或者俩阶台阶,也就是说,在第一级台阶他只可能是从地面上上来的,在第二级台阶,他只可能是从第一级台阶上上来的,但是第三级台阶,他有可能是从第二级台阶上来的,也有可能是从第一级台阶上来的,以此类推。
于是,我们可以得到:a[i]=a[i-1]+a[i-2]
我们发现这是一个斐波那契数列。最终的走法数等于到上一级的走法数加上到上上级的走法数(有可能从上级过来,也有可能从上一级过来)一直推回去。所以,走法的数值就等于斐波拉契数列的值。
明确这些,代码如下:

#include<stdio.h>
int main()
{
    int n,i;
    scanf("%d",&n);
    int a[n];
    a[0]=1;
    a[1]=2;
    for(i=2;i<n;i++)
    {
        a[i]=a[i-2]+a[i-1];
    }
    printf("%d\n",a[n-1]);
}

这道题也可以换另一种写法:

#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int a[n];
    for (int i = 0; i<=n; i++)
    {
        if (i==0) a[i]=0;
        else if(i==1) a[i]=1;
        else if(i==2) a[i]=2;
        else a[i]=a[i-1]+a[i-2];
    }
    printf("%d",a[n]);
    return 0;
}

好的,这道题的分享就到这里了,希望对大家有所帮助。