[语法题]简单斐波那契 原创

来源: 语法题
算法标签 循环结构,递推

题目描述

以下数列0 1 1 2 3 5 8 13 21 …被称为斐波纳契数列。

这个数列从第3项开始,每一项都等于前两项之和。

输入一个整数N,请你输出这个序列的前N项。

输入格式

一个整数N。

输出格式

在一行中输出斐波那契数列的前N项,数字之间用空格隔开。

数据范围

0<N<46

样例
输入样例:

5

输出样例:

0 1 1 2 3

思路

0 1 1 2 3 5 8 13 21 …被称为斐波纳契数列每一项都等于前两项之和
即我们可以得到表达式,f[i]=f[i-1]+f[i-2]
那么很显然,我们可以利用循环结构和该公式求得斐波那契数列。
且最小项肯定为f[i]=f[i-1]+f[i-2],则我们首项肯定为f[2].
代码如下

C++ 代码
#include<iostream>
#include<vector>//动态数组

using namespace std;

const int N=50;
int n,cnt;
vector<int>fib={0,1};//手动写入f[0],f[1]
int main()
{
    cin>>n;
    for(int i=2;i<=N;i++)//从第二项遍历到最大范围
        {
            if(i<=n)
                fib.push_back(fib[i-1]+fib[i-2]);//当当前位子小于目标值时,得到f[i]等于前两项之和
            if(cnt<n)
                cout<<fib[cnt++]<<" ";//当f的计数器小于目标值时,输出0-n-1的斐波拉契数列,计数器从零开始跑,以求o(n)走完
        }
    return 0;
}
posted @   俺叫西西弗斯  阅读(0)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示