算法拓展之斐波那契数列

◇◆丶佛笑我妖孽 提交于 2020-02-02 03:32:22

你可能不知道斐波那契数列是什么
但你一定见过此类数据
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
这类题目更常见的是要你结合高精度使用

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!