AcWing 21. 斐波那契数列(迭代算法(或DP算法))

斐波那契数列的求法有很多种,这里只列举一种最简单的方法。我们先假设斐波那契数列是如下排列的:

下标-1012345……
数据1011235……

我们先设置两个变量f和g,并分别初始化为0和1以代表第0号元素和第-1号元素(实际上-1号元素并不存在,只是为了更好地。然后我们可以很容易地发现,只要不断重复进行如下操作

f = f + g;
g = f - g;

就能令f和g不断以一个单位的速度在数列中进行右移,从而在n次迭代后得到对应的元素。

具体代码如下:

class Solution {
public:
    int Fibonacci(int n) {
        int f = 0, g = 1;
        while(n--){
            f += g;
            g = f - g;
        }
        return f;
    }
};

另外值得一提的是,该算法的DP算法分析思路与以上思路一致,只不过以上代码没有用到dp数组而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值