算法拓展之斐波那契数列

你可能不知道斐波那契数列是什么
但你一定见过此类数据
1 1 2 3 5 8 13 21 34
这类数据的题目在算法练习中我们也遇到过
第n个数等于它前两个数的和
我们通常的办法是打表,然后给你n再取其对应的值输出
其实它是有一个公式可以直接求的
在这里插入图片描述
这个公式仅适用于是1 1 2 3这样开始的
如果数列是1 2 3 5这样开始的
我们需要在输入的n后面再加1,来求值
如下面这个code

#include <bits/stdc++.h>

using namespace std;
int main()
{
    double n;
    int ans;
    while(cin >> n)
    {
        n++;
        ans=(pow((1+sqrt(5))/2,n)-pow((1-sqrt(5))/2,n))/sqrt(5);
        cout << ans << endl ;
    }
    return 0;
}

需要注意的是,往往一个题目不会直接一个通项公式就让你ac
这类题目更常见的是要你结合高精度使用

发布了44 篇原创文章 · 获赞 13 · 访问量 2350

猜你喜欢

转载自blog.csdn.net/NEFU_kadia/article/details/104137160
今日推荐