题解 | Fibonacci数列

Fibonacci数列

https://www.nowcoder.com/practice/18ecd0ecf5ef4fe9ba3f17f8d00d2d66

解法:我们可以一边求斐波那契数组一边找离n最近的两个斐波那契数。

求斐波那契数我们可以借助三个变量来求,a、b、c。初始化 a = 0, b = 0, c = 1。接着每次将b给a,c给b,c在等于a+b即可。

我们要求离n最近的两个斐波那契数,可以用c来比较,如果n>c的话,就继续求,如果n<=c,说明n现在就在b和c之间,求最少的变化次数,我们只需要求n和b/c的差值即可。返回最小值即可。

#include <iostream>
using namespace std;

int main()
{
    int n = 0;
    cin >> n;
    int a = 0, b = 1, c = 1;
    while(n > c)
    {
        a = b;
        b = c;
        c = a + b;
    }

    cout << (c-n > n-b? n-b : c-n) << endl;
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务