首页 > 其他分享 >斐波那契数列(递归、记忆化搜索、递归)

斐波那契数列(递归、记忆化搜索、递归)

时间:2022-09-25 19:34:06浏览次数:42  
标签:return 数列 递归 int dfs 斐波 那契 include

题目:

菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。
给出一个正整数k,要求菲波那契数列中第k个数是多少。

输入

输入一行,包含一个正整数k。(1 <= k <= 46)

输出

输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小

1.递归(暴力)
#include<iostream>
#include<cstdio>
using namespace std;
int dfs(int n)
{
    if(n==1) return 1;
    if(n==2) return 1;
    if(n==46) return 1836311903; //数据点(最大边界),可以AC 
    return dfs(n-2)+dfs(n-1);
}
int main()
{    
    int k;
    scanf("%d",&k);
    printf("%d\n",dfs(k));
    return 0;
}

2.记忆化搜索

#include<iostream>
#include<cstdio>
using namespace std;
int k;
//const int dp=100000;
int f[50];
long long dfs(int n)
{
    if(n==1) return f[1]=1;
    if(n==2) return f[2]=1;
    if(f[n]>0) return f[n];
    return f[n]=dfs(n-1)+dfs(n-2);
}
int main()
{
    cin>>k;
    cout<<dfs(k)<<endl;
}

3.递推

#include<iostream>
#include<cstdio>
long long f[60];
using namespace std;
int main()
{
    int n,s;
    f[1]=f[2]=1;
    cin>>n;
    for(int i=3;i<=n;i++)
    {
        f[i]=f[i-2]+f[i-1];
    }
    cout<<f[n]<<endl;
    return 0;
}

 

标签:return,数列,递归,int,dfs,斐波,那契,include
From: https://www.cnblogs.com/xdzxlsy/p/16728542.html

相关文章

  • 学习记录8方法的重载、可变参数、递归
    方法的重载重载就是在一个类中,又想同的函数名称,但形参不同的函数即,一个类中有两个同名的方法,但这两个类的“返回值类型”、“形参类型”、“形参个数”不同,而在程序中......
  • 斐波那契查找算法
    斐波那契也称黄金分割法,通过黄金分割点找到mid值,即mid=low+F(k-1)-1 (F代表斐波那契数列)对F(k-1)-1的理解由斐波那契数列F[k]=F[k-1]+F[k-2]的性质,可以得到 (F[k]-1......
  • 尾递归与非尾递归(线性递归)
    1尾递归与非尾递归区别非尾递归(线性递归):当数量很大时,会造成栈溢出。因为每次递归调用时,递归函数中的参数,局部变量等都要保存在栈中。尾递归:return时只调用自身,不能有额......
  • C语言递归汉诺塔
    #include<stdio.h>intmain(){voidhanoi(intn,charone,chartwo,charthree);intm;printf("Inputthenumberofdiskes:");scanf("%d",&m);......
  • 函数递归
    CREATEDEFINER=`root`@`%`FUNCTION`queryParentAreaInfo`(areaIdINT)RETURNSvarchar(4000)CHARSETutf8mb4BEGINDECLAREsTempVARCHAR(4000);DECLAREsTempChd......
  • Vue组件递归渲染
    父级菜单  数据格式  子组件递归(直接使用name) ......
  • 递归、迷宫问题
    简介递归需遵守的规则应用实例代码实现publicclassMiGong{ publicstaticvoidmain(String[]args){ //先创建一个二维数组,模拟迷宫 //地图......
  • 二叉树遍历(递归、迭代)
    前中后序遍历递归法//前序遍历varpreorderTraversal=function(root){letres=[];constdfs=function(root){  if(root===null)return;  //先序遍历所......
  • BM31对称二叉树(判断二叉树是否symmetric?)(递归)
    描述给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)例如:                 下面这棵二叉树是对称的下面这棵二叉树不对称。数据范围......
  • LeetCode 509 斐波那契数
    动态规划constintN=40;classSolution{public:intdp[N];intfib(intn){dp[1]=1;for(inti=2;i<=n;i++)......