首页 > 其他分享 >fibnacci数列递归实现

fibnacci数列递归实现

时间:2022-10-08 22:37:49浏览次数:48  
标签:... return 数列 递归 int fibnacci Fibonacci

fibnacci数列递归实现

网上查询资料说明什么是fibnacci数列?

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(≥ 2,∈ N*),这个数列从第三项开始,每一项都等于前两项之和。在现代物理、准晶体结构、化学等领域,斐波那契数列都有直接的应用。

给出fibnacci数列的递归表达式

它的通项公式为:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}

用C语言递归实现Fib(n),并进行测试,提交代码和运行结果截图。在你的计算机上1分钟内能计算出fib(10),fib(100),fib(1000),fib(10000)吗

在网络上查询关于C语言递归的格式如下

void recursion()
{
   statements;
   ... ... ...
   recursion(); /* 函数调用自身 */
   ... ... ...
}
 
int main()
{
   recursion();
}

又参考了三个不同的相关代码得

#include <stdio.h>
long fibonaci(int n) {
if(n == 0)
{
return 0;
}
if(n == 1)
{
return 1;
}
return fibonaci(n-1) + fibonaci(n-2);
}
int main() {
int a;
printf("Input a number: ");
scanf("%d", &a);
printf("fibonaci(%d) = %ld\n", a, fibonaci(a));
return 0;
}

 

 但是100之后就输出不出来了

在网上找了几个虽然能输出100以上的但是非常慢,于是我找到了非递归的代码

#include <stdio.h>
long Fibonacci(int n);
int main(){
    int n;
    long k;
    printf("请输入n:");

    scanf("%d",&n);
    k=Fibonacci(n);

    putchar('\n');
    printf("Fibonacci(%d)=%ld\n",n,k);

    return 0;
}
long Fibonacci(int n)
{
    int n1=1,n2=1;
    int t=0,i=0;
    if (n<3)
    { 
        return 1;
    }
    else
        for(i=0; i<n-2; i++)
        {
            t = n1 + n2;
            n1 = n2;
            n2 = t;
        }
        return t;
    }
}

 

 

 

 

 

 

标签:...,return,数列,递归,int,fibnacci,Fibonacci
From: https://www.cnblogs.com/liudi20221408/p/16770110.html

相关文章

  • 03 栈与递归 | 数据结构与算法
    1.栈栈的定义:限定在表尾进行插入和删除操作的线性表空栈:不换任何元素的栈栈顶top:允许插入删除的一端栈的操作(连续设计)置空栈make_null_stack()#definemaxn......
  • fibnacci数列递归实现
    fibnacci数列递归实现什么是Fibonacci数列斐波那契数列(Fibonaccisequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称......
  • 【Java基础】递归介绍、思想、基本使用、求阶乘及递归遍历目录
    目录​​一、递归介绍​​​​二、递归求阶乘​​​​三、递归遍历目录​​一、递归介绍递归(recursion)的定义:递归是一种解决问题的有效方法,在递归过程中,函数将自身作为子例......
  • 斐波那契数列
    1.斐波那契数列斐波那契数列是如下的数列:1,1,2,3,5,8,13...其中,该数列的前两项是1,从第三项(包括第三项)开始第n项为第(n-1)项与第(n-2)项的和。2.斐波那契数列递推......
  • 代码随想录day14 ● 理论基础 ● 递归遍历 ● 迭代遍历 ● 统一迭代
    ● 理论基础 1//二叉树的定义2structTreeNode{3intval;4TreeNode*left;5TreeNode*right;6TreeNode(intx):val(x),left(NULL),r......
  • 斐波那契数列
    fibnacci数列定义斐波那契数列(Fibonaccisequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这......
  • 665 非递减数列
    三种情况:1、nums=[4,2,5],nums[i]<nums[i-1],此时只需要改变nums[i-1],[1,2,5]2、nums=[1,4,2,5],i>.1,nums[i]<nums[i-1],此时调整nums[i-1],满足nums[i-2]<=nums[i-1]<=nums[......
  • Java_File&递归&字节流
    Java_File&递归&字节流1.File类1.1File类概述和构造方法【应用】File类介绍它是文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的对于File......
  • fibnacci数列递归实现
    1.斐波那契数列(Fibonaccisequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2......
  • 递归之八皇后问题
    八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两......