亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 生成斐波那契数列:for 循环、while 循环与递归实现全解析

什么是斐波那契数列?

斐波那契数列是指每个数等于前两个数之和的数列。Java 中通常以 0 和 1 开始:

0, 1, 1, 2, 3, 5, 8, 13, 21, …

除了数学趣味,斐波那契数列常用于算法分析——如估算递归过程运行时间、计算最大公约数等。

使用 for 循环生成斐波那契数列

// for 循环实现
public class FibonacciForLoop {
    public static void main(String[] args) {
        int maxNumber = 10; // 项数
        int previous = 0;
        int current = 1;
        System.out.print("前 " + maxNumber + " 项斐波那契数列: ");
        for (int i = 1; i <= maxNumber; i++) {
            System.out.print(previous + " ");
            int next = previous + current;
            previous = current;
            current = next;
        }
    }
}

输出:

前 10 项斐波那契数列: 0 1 1 2 3 5 8 13 21 34

核心逻辑:

使用 while 循环生成斐波那契数列

// while 循环实现
public class FibonacciWhileLoop {
    public static void main(String[] args) {
        int maxNumber = 10;
        int previous = 0;
        int current = 1;
        System.out.print("前 " + maxNumber + " 项斐波那契数列: ");
        int i = 1;
        while (i <= maxNumber) {
            System.out.print(previous + " ");
            int next = previous + current;
            previous = current;
            current = next;
            i++;
        }
    }
}

输出:

前 10 项斐波那契数列: 0 1 1 2 3 5 8 13 21 34

基于用户输入的斐波那契数列

import java.util.Scanner;

public class FibonacciUserInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入项数: ");
        int maxNumber = scanner.nextInt();
        int previous = 0;
        int current = 1;
        System.out.print("前 " + maxNumber + " 项斐波那契数列: ");
        for (int i = 1; i <= maxNumber; i++) {
            System.out.print(previous + " ");
            int next = previous + current;
            previous = current;
            current = next;
        }
        scanner.close();
    }
}

逻辑: 迭代逻辑不变,只是项数由用户输入决定。

使用递归生成斐波那契数列

// 递归实现
public class FibonacciRecursion {
    public static int fibonacci(int n) {
        if (n == 0) return 0;
        if (n == 1 || n == 2) return 1;
        return fibonacci(n - 1) + fibonacci(n - 2);
    }

    public static void main(String[] args) {
        int maxNumber = 10;
        System.out.print("前 " + maxNumber + " 项斐波那契数列: ");
        for (int i = 0; i < maxNumber; i++) {
            System.out.print(fibonacci(i) + " ");
        }
    }
}

输出:

前 10 项斐波那契数列: 0 1 1 2 3 5 8 13 21 34

递归原理:

  1. 基准情况:n == 0 返回 0;n == 1 || n == 2 返回 1。
  2. 递归情况:fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)。
  3. 每次调用拆分为两个子调用,完美契合数学定义。

性能提示: 递归写法虽简洁,但对大 n 呈指数级时间复杂度。生产环境建议使用备忘录模式(记忆化)或迭代法。

java

  1. Java Hello World:你的第一个程序
  2. Java 变量与字面量:全面指南
  3. 理解 Java 表达式、语句与代码块
  4. Java 类与对象:实用指南
  5. Java 抽象类与抽象方法完全指南
  6. 精通 Java 嵌套类与内部类:类型、示例与最佳实践
  7. Java throw 与 throws 深度解析:异常处理实战指南
  8. 掌握 Java 自动装箱与拆箱:实战示例与最佳实践
  9. Java 判断素数(质数)的完整指南与代码实现
  10. Java 判断阿姆斯特朗数(自幂数):for 循环与 while 循环实现
  11. Java 递归反转字符串:原理、代码实现与性能分析
  12. Java 回文数判断:while 循环与 for 循环两种算法实现