小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?
#include <stdio.h>
//类似于斐波那契数列
//相当于从0走到n阶台阶有多少种方法
//n=1时有一种方法,n=2时有两种方法,n=3时有三种方法,n=4时有五种方法,以此类推
//则第n阶台阶的走法相当于(n-1)种走法加上(n-2)种走法
int ways(int n) {
if (n == 1) {
return 1;
} else if (n == 2) {
return 2;
} else {
return ways(n - 1) + ways(n - 2);
}
}
int main() {
int n, result = 0;
scanf("%d", &n);
printf("%d", ways(n));
return 0;
} #include <stdio.h>
int Steps(int n)
{
//剩0台阶一个走法,剩一个台阶一种走法
//剩两个台阶两种走法,一步一步走,两步走
if(n == 0)
return 0;
if(n == 1)
return 1;
if(n == 2)
return 2;
//走两步的走法加上走一步的走法就是总的走法
return Steps(n-1) + Steps(n-2);
}
int main() {
int n = 0;
scanf("%d", &n);
int st = Steps(n);
printf("%d", st);
return 0;
} #include <stdio.h>
// 斐波那契数列问题
// 思路:递推 + 回归
int main() {
int n;
while (scanf("%d", &n) != EOF) {
int f, tmp, f1 = 0, f2 = 1;
for(int i = 0; i < n; i++)
{
f = f1 + f2;
tmp = f2;
f2 = f1 + f2;
f1 = tmp;
}
printf("%d\n", f);
}
return 0;
}
#include <stdio.h>
int method(int x)
{
if (x > 1)
return method(x - 1) + method(x - 2);
return 1;
}
int main()
{
int input = 0;
while (scanf("%d", &input) != EOF)
{
int num = method(input);
printf("%d\n", num);
}
return 0;
}