题目:
题目描述
小乐乐上课需要走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; }
好的,这道题的分享就到这里了,希望对大家有所帮助。