实现思路:反向思维,设要爬n阶楼梯,倒数第二次爬楼梯则有为n-1阶或n-2阶,则可列为f(n)=f(n-1)+f(n-2),爬1阶有1种方法,爬2阶有2种方法,那这样就成了一个斐波那契数列的问题
简单方法:我们看成一个移动问题1 2 3 5 8 13.。。。1 2 3 —>2 3 5,以此类推
void dstair(int x)
{
int p = 0, q = 0, r = 1;
int i;
for (i = 0; i < x; i++)
{
p = q;
q = r;
r = p + q;
}
printf("%d", r);
}
int main()
{
int n;
scanf("%d", &n);
dstair(n);
return 0;
}