Java练习题-输出斐波那契(Fibonacci)数列

简介: Java练习题-输出斐波那契(Fibonacci)数列


题目

编写程序,使用递归方法打印输出Fibonacci数列的前20项

斐波那契(Fibonacci)数列

Fibonacci数列(Fibonacci sequence),又称黄金分割数列、因数列的形式简洁且定义明确,被广泛的应用在理论数学和应用数学中。

Fibonacci数列由意大利数学家莱昂纳多·斐波那契(Leonardo Fibonacci)在1202年的一本书中提出,因此得名。他在书中提出了这样一个问题:一对刚出生的兔子,从第二个月开始就可以生育,每月每对可生育的兔子都会生出一对新的兔子,新出生的兔子从第二个月开始就可以生育。假设所有的兔子都不会死去,问:每个月的兔子总数是多少?

根据这个问题的设定,我们可以得到的Fibonacci数列:1, 1, 2, 3, 5, 8, 13, 21, ....

也就是说,Fibonacci数列中的每一项,从第3项开始,都是前两项之和。用数学公式来表示,就是:F(n) = F(n-1) + F(n-2),其中n>=3,F(1) = 1,F(2) = 1

Fibonacci数列与黄金分割有着密切的关系。当Fibonacci数列进行到足够大的时候,相邻两项的比值将趋近于黄金分割的值:1.6180339887…

实现思路

1.定义一个fibonacci递归方法,用于计算Fibonacci数列的第n项,在fibonacci方法中,首先进行判断,如果n<=1,则直接返回n本身。如果n>1,则通过递归调用fibonacci(n-1)fibonacci(n-2)来计算第n项的值,即前两项的和

public static int fibonacci(int n){
      //如果n小于等于1,返回n
        if(n <= 1){
            return n;
        }else{//否则返回前两项之和
            return fibonacci(n - 1) + fibonacci(n - 2);
        }
    }

2.在main方法中,我们使用一个循环来输出fibonacci数列的前20项,不断地循环调用定义的fibonacci方法,直到循环结束,输出fibonacci数列的前20项

public static void main(String[] args){
        //循环输出前20项
        for(int i = 0; i < 20; i++){
            System.out.println(fibonacci(i));
        }
    }

具体代码实现

//使用递归方法输出fibonacci数列的前20项
public class fib{
    public static void main(String[] args){
        //循环输出前20项
        for(int i = 0; i < 20; i++){
            System.out.println(fibonacci(i));
        }
    }
    //定义递归方法
    public static int fibonacci(int n){
      //如果n小于等于1,返回n
        if(n <= 1){
            return n;
        }else{//否则返回前两项之和
            return fibonacci(n - 1) + fibonacci(n - 2);
        }
    }
}

结束语

以上就是Java练习题-输出斐波那契(Fibonacci)数列

持续更新Java练习题专栏,敬请期待

相关文章
|
6月前
|
存储 Java
创建一个乘法练习题生成器 using Java
创建一个乘法练习题生成器 using Java
|
7月前
|
人工智能 Java
Java练习题-输出二维数组对角线元素和
Java练习题-输出二维数组对角线元素和
|
6月前
|
存储 算法 前端开发
2019蓝桥杯大赛省赛Java大学B组 数列求值
2019蓝桥杯大赛省赛Java大学B组 数列求值
21 0
|
7月前
|
存储 Java 索引
Java练习题-获取数组元素最大值
Java练习题-获取数组元素最大值
Java练习题-获取数组元素最大值
|
6月前
|
Java
P9242 [蓝桥杯 2023 省 B] 接龙数列JAVA,边权为1的最短路问题,洛谷P9242 [蓝桥杯 2023 省 B] 接龙数列​编辑力扣1926.迷宫离入口最近的出口力扣433.
P9242 [蓝桥杯 2023 省 B] 接龙数列JAVA,边权为1的最短路问题,洛谷P9242 [蓝桥杯 2023 省 B] 接龙数列​编辑力扣1926.迷宫离入口最近的出口力扣433.
|
7月前
|
Java
<Java SE> 数组详解大全(附带练习题).一维数组、二维数组、数组拷贝、数组遍历...
<Java SE> 数组详解大全(附带练习题).一维数组、二维数组、数组拷贝、数组遍历
53 0
|
7月前
|
Java 索引
Java练习题-用冒泡排序法实现数组排序
Java练习题-用冒泡排序法实现数组排序
|
7月前
|
Java
Java练习题-键盘录入字符串实现大小写转换
Java练习题-键盘录入字符串实现大小写转换
|
7月前
|
算法 Java 程序员
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
61 0
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
|
7月前
|
存储 Java
Java程序设计练习题8异常处理
Java程序设计练习题8异常处理
173 0