Java之《剑指Offer》:求斐波那契数列的第n项的值

    科技2022-09-06  138

    一.  什么是斐波那契数列?

    官方解释:

           斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)。

    个人理解:

          斐波那契数列说白了就是一个数列,第一项为0,第二项为1,然后第三项为第二项加第一项的和;第四项为第三项加第二项的和;递推式:F(0)=0,F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)。


    二. 题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)

    定义第一项和第二项的变量

    对n个数进行循环,转变n1,n2,target的位置


    三. 代码实现

          代码实现方式有2种,第一种是递归循环,第二种是总是当前位置的数的前一个数和前二个数的相加

    方法一:

    该方法返回出去的是最终的所求n的值 public class Solution { public int Fibonacci(int n) { //初始化返回值 int target = 0; if(n == 0){ return 0; } if(n == 1){ return 1; } int n1 = 0; int n2 = 1; //对数组进行循环遍历,从第二项开始 for(int i = 2;i <= n;i++){ //求斐波那契数列的第m项 target = n1 + n2; n1 = n2; n2 = target; } return target; } }

    方法二:使用递归函数

    /*返回的就是一个*/ private static int Fibonacci(int n) { if(n == 0 || n == 1){ return n; }else{ return Fibonacci(n-1) + Fibonacci(n-2); } }

    莫名的压力,好多东西需要达到掌握的程度,好多东西需要学。加油!奥利给!

    Processed: 0.008, SQL: 9