这是个常考的知识点,有好多中变形,如走楼梯问题,一次一个台阶或者两个台阶!
#include "stdio.h"
#include "stdlib.h"
//递归实现
int f(int n)
{
if (n <= 0)
return -1;
if (n == 1)
return 1;
if (n == 2)
return 2;
return (f(n - 2) + f(n - 1));
}
//循环实现
int g(const int &n)
{
if (n <= 0)
return -1;
if (n == 1)
return 1;
if (n == 2)
return 2;
int a1 = 1, a2 = 2, a = 0;
for (int i = 2; i < n; i++)
{
a = a1 + a2;
a1 = a2;
a2 = a;
}
return a;
}
int main()
{
int n =0,re =0;
scanf("%d", &n);
printf("%d\n", f(n));
re = g(n);
printf("%d\n", g(n));
return 0;
system("pause");
}