计蒜客 -- 爬楼梯

来源:互联网 发布:vb.net oracle 编辑:程序博客网 时间:2024/05/16 13:41

假设你现在正在爬楼梯,楼梯有 n 级。每次你只能爬 1 级或者 2 级,那么你有多少种方法爬到楼梯的顶部?

输入格式

第一行输入一个整数n(1≤n≤50),代表楼梯的级数。

输出格式

输出爬到楼梯顶部的方法总数。

样例输入

5
样例输出

8

一开始用的递归。。。。n 太大时程序运行超时,


递归:(超时)

#include<stdio.h>int L(int n,int *count){    if(n == 0)        return (*count)++;    if(n < 0)        return  (*count);    L(n-1,count);    L(n-2,count);    return *count;}int main(){    int n = 0;    int p = 0;    scanf("%d",&n);    printf("%d",L(n,&p));    return 0;}

循环:

#include<stdio.h>int main(){    int n = 0;    long long f =0;    scanf("%d",&n);    if (n == 1)        f = 1;    else if(n == 2)        f = 2;    else    {        long long old_f = 1;        long long next_old_f = 2;        while(n > 2)        {            f = old_f + next_old_f;            old_f = next_old_f;            next_old_f = f;            n--;        }    }    printf("%lld",f);    return 0;}
0 0