剑指 斐波那契数列 和 青蛙跳台阶问题

1: 斐波那契数列问题

斐波那契数列问题描述:

F(0) = 0,   F(1) = 1,
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

int fib(int n){
    if (n < 0)
        return -1;

    if (0 == n)
        return 0;
    else if (n <= 2)
        return 1;
    
    long long lesser = 0, bigger = 1, res;    //lesser=f(n-2), bigger=f(n-1)
    int current_n = 1;
    while (current_n < n) {
        current_n++;
        res = (lesser + bigger) % 1000000007;  //每一步的和都得取余
        lesser = bigger;
        bigger = res;
    }

    return res;
}

 2: 青蛙跳台阶问题 

青蛙跳台阶问题描述:

F(0) = 0,   F(1) = 1,   F(2) = 2
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

//和斐波那契数列问题相比,从F(2)开始,值不一样但是F算法一样

int numWays(int n){
    if (n < 0)
        return -1;

    if (0 == n)
        return 1;
    else if (1 == n)
        return 1;
    
    long long lesser = 1, bigger = 1, res;
    int current_n = 1;
    while (current_n < n) {
        current_n++;
        res = (lesser + bigger) % 1000000007;  //每一步的和都得取余
        lesser = bigger;
        bigger = res;
    }

    return res;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值