Description
楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。
编一个程序,计算共有多少种不同的走法。
Input
一个数字,楼梯数。
Output
输出走的方式总数。
Sample Input 1
4
Sample Output 1
5
比赛的时候做不出来,想得很复杂,回去之后用复杂度很高的算法模拟出来了,今天看了题解才知道是斐波那契数列……我数学敏感度太低了QAQ
#include<stdio.h>
int fib(int n);
int main(void){
int n;
scanf("%d",&n);
printf("%d",fib(n+1));
return 0;
}
int fib(int n)
{
if(n==0)
return 0;
else if(n==1)
return 1;
else
return fib(n-1)+fib(n-2);
}
之前学递归的时候写的斐波那契正好用上。
顺便扔一个当时赛后用垃圾算法写出来的代码。
当时想的组合数累加,写完还觉得自己怪聪明的,唉,代码之路还长着呢。
#include<stdio.h>
int fact(int n){
int f=1;
for(int i=1;i<=n;i++){
f