首页 > 其他分享 >AcWing 717. 简单斐波那契

AcWing 717. 简单斐波那契

时间:2024-01-22 15:03:04浏览次数:37  
标签:fib return 数列 717 斐波 int 那契

AcWing 717. 简单斐波那契

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

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

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

输入格式

一个整数 \(N\)。

输出格式

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

数据范围

\(0<N<46\)

输入样例:

5

输出样例:

0 1 1 2 3

解题思路:
首先,判断数据范围,n小于46,可适用递推或者dp来解决。这个题使用递归时会超时,就可以使用记忆化搜索。

递推:

记忆化搜索:

代码:

#include<bits/stdc++.h>

using namespace std;

const int N = 50;
int f[N];
int n;

int fib(int n) {
    // f[n] 如果不是0,就表明它被计算过,直接返回。
	if (f[n]) return f[n];
	if (n == 1) return f[1] = 0;  // 等价于 f[1] = 0; return 0; 
	if (n == 2) return f[2] = 1;  // 等价于 f[2] = 1; return 1;
	return f[n] = fib(n - 1) + fib(n - 2); 
    /* 等价于
       int temp = fib(n-1) + fib(n-1);
       f[n] = temp;
    */
}

int main() {
	cin >> n;
	fib(n);
	for (int i = 1; i <= n; i++) cout << f[i] << ' ';
	return 0;
}


标签:fib,return,数列,717,斐波,int,那契
From: https://www.cnblogs.com/neko333/p/17980043

相关文章

  • BZOJ1717 Milk Patterns 产奶的模式 (二分+后缀数组+height数组)
    发现这样起标题更能引流(ylg实锤了)题意给定一个长度为\(n\)的数组\(a\),求在\(a\)中出现了至少\(k\)次的最长子串的长度。解法考虑将一个子串拆成两个后缀,即\([l,r]=[l,n]-[r,n]\),发现一个长度为\(x\)的子串\(t\)在\(i,j\)两个位置出现过当且仅当后缀\(i,j\)有......
  • 时间复杂度(斐波那契)和空间复杂度
    1.0时间复杂度(斐波那契)//计算阶层递归Fac的时间复杂度longlongFac(size_tN){if(0==N)return1;returnFac(N-1)*N;}该算法的时间复杂度度很稳定:O(N)//计算斐波那契数列递归Fib的时间复杂度longlongFib(size_tN){if(N<3)return1;returnFib(N-1)+......
  • Halo2简单使用-斐波那契数列
    电路设计Halo2是基于PLONK算法的零知识证明框架,使用Rust语言。在Halo2中要证明你掌握斐波那契数列,例如Fib(10)=55。则需要将你的每一步计算过程(秘密的)罗列出来。并由程序(电路)来进行验证,生成证明。在PLONK算法里,我们使用表格来进行计算跟踪,例如:abc112123235358581381321132134......
  • Halo2简单应用-斐波那契示例
    电路设计Halo2是基于PLONK算法的零知识证明框架,使用Rust语言。在Halo2中要证明你掌握斐波那契数列,例如Fib(10)=55。则需要将你的每一步计算过程(秘密的)罗列出来。并由程序(电路)来进行验证,生成证明。在PLONK算法里,我们使用表格来进行计算跟踪,例如:abr112123......
  • Java-与斐波那契数列相关的变体问题
    变体问题指的是提问的方式不一样了,但是解决问题的方法还是用斐波那契数列来解。——写在前面的话。一、变体1-兔子问题1.问题描述第一个月,有一对未成熟的兔子第二个月上述的一对兔子成熟第三个月,他们能产下一对小兔子所有兔子遵循相同规律,求第n个月的兔子个数2.分析例子假设我要求......
  • Java-用递归的思想求斐波那契数列第n项的值
    一、思想-多路递归多路递归multirecursion就是在每次递归时包含多次(大于一次)的自身调用。也就是一个问题会被拆分成多个子问题。多路递归比单路递归在分析时间复杂度上比较复杂一些。二、斐波那契数列三、例子以n=4为例,当我们用下面(第四部分)的代码实现时,这个多路递归的求解过......
  • C练习题——打印第n个斐波那契数
    斐波那契数列:1123581321...规律:从第三个数开始,第n个数为前两数之和#include<stdio.h>intmain(){intn=0;scanf("%d",&n);inta=1;intb=1;intc=1;while(n>=3){c=a+b;a=b;......
  • 前端歌谣的刷题之路-第一百一十七题-实现斐波那契数列
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷本题目源自于牛客网微信公众号前端小歌谣题目......
  • 《论取模的艺术》231760:菲波那契数列.递推ver
    原题错误代码:#include<bits/stdc++.h>usingnamespacestd;longlongmath(inta){if(a<=2){return1;}longlongf0=1,f1=1,f2;for(inti=3;i<=a;++i){f2=f1+f0;f0=f1;f1=f2;......
  • #yyds干货盘点# LeetCode程序员面试金典:斐波那契数
    题目斐波那契数(通常用F(n)表示)形成的序列称为斐波那契数列。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2),其中n>1给定n,请计算F(n)。 示例1:输入:n=2输出:1解释:F(2)=F(1)+F(0)=1+0......