题目描述
楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。
编一个程序,计算共有多少种不同的走法。
输入格式
一个数字,楼梯数。
输出格式
输出走的方式总数。
既然我们可以走以一步或者俩步 那么将问题进行简化的话 我们不是考虑走n阶楼梯有多少走法 而是在走到第n-1或者n-2有多少种走法 因为到了n-1或者n-2的时候 我们只要再走1或者2步就可以了 就这样循环地想下来 这里我们假设走到n阶有f(n)那么f(n)=f(n-1)+f(n-2);而f(n-1)和f(n-2)又可以往下顺延 因此我们不难看出这实际上是一个斐波那契数列 而f(0)=1,f(1)=1所以我们可以写出如下的代码
#include <stdio.h>
int main(){
int a=1,b=1,temp;//这里的a和b分别代表了f(0)和f(1)
for(int i=2//从第2阶开始数;i<=n//确保了我们数的次数没有错;i++){
temp=b;//这里我们把temp的值等价于f(1)
b=a+b;//然后b的值就变成了f(2)
a=temp;//然后我们将f(1)的值赋予a,这样一来a就从f(0)变成了f(1) }
printf("%d",b);//然后我们再输出b的值就可以得到f(n)了
return 0; }
题目有涉及到高精度加法本人比较菜就先不折腾这个了