生成斐波那契数列的 Java 程序

在本程序中,您将学习使用 for 和 while 循环在 Java 中生成斐波那契数列。

要理解此示例,您应该具备以下 Java 编程的知识:

生成斐波那契数列

斐波那契数列是一个系列,其中下一项是前两项之和。斐波那契数列的前两项是0后跟1

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

假设,我们的前两个术语是:

firstTerm =  0
secondTerm = 1

斐波那契数列中的下一项将计算为:

nextTerm = firstTerm + secondTerm; (0 + 1)
firstTerm = secondTerm; (1)
secondTerm = nextTerm; (1)

nextTerm = firstTerm + secondTerm; (1 + 1)
....

现在让我们在我们的程序中应用这个逻辑。

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

public class Main {
  public static void main(String[] args) {

    int n = 10, firstTerm = 0, secondTerm = 1;
    System.out.println("Fibonacci Series till " + n + " terms:");

    for (int i = 1; i <= n; ++i) {
      System.out.print(firstTerm + ", ");

      // compute the next term
      int nextTerm = firstTerm + secondTerm;
      firstTerm = secondTerm;
      secondTerm = nextTerm;
    }
  }
}

输出

Fibonacci Series till 10 terms:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,

在上面的程序中, firstTermsecondTerm 分别用01初始化(斐波那契数列的前两位数字)。

在这里,我们使用 for 循环来

  • 打印该系列的 firstTerm
  • 通过 firstTermsecondTerm 相加计算 nextTerm
  • secondTerm 赋值给 firstTerm,将 nextTerm 赋值给 secondTerm

我们还可以在 Java 中使用 while 循环生成斐波那契数列。

示例 2:使用 while 循环生成斐波那契数列

public class Main {
  public static void main(String[] args) {

    int i = 1, n = 10, firstTerm = 0, secondTerm = 1;
    System.out.println("Fibonacci Series till " + n + " terms:");

    while (i <= n) {
      System.out.print(firstTerm + ", ");

      int nextTerm = firstTerm + secondTerm;
      firstTerm = secondTerm;
      secondTerm = nextTerm;

      i++;
    }
  }
}

输出

Fibonacci Series till 10 terms:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,

该程序的工作方式与之前的程序相同。

而且,虽然这两个程序在技术上都是正确的,但在这种情况下最好使用 for 循环。这是因为迭代次数(从 1 到 n) 是已知的。

示例 3:生成一个给定数字之内的斐波那契数列

public class Fibonacci {
  public static void main(String[] args) {

    int n = 100, firstTerm = 0, secondTerm = 1;

    System.out.println("Fibonacci Series Upto " + n + ": ");

    while (firstTerm <= n) {
      System.out.print(firstTerm + ", ");

      int nextTerm = firstTerm + secondTerm;
      firstTerm = secondTerm;
      secondTerm = nextTerm;

    }
  }
}

输出

Fibonacci Series Upto 100:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,

在此示例中,我们不生成某个数字的斐波那契数列,而是生成指定数字 ( 100 ) 之内的数列。

为此,我们只需要比较 firstTermn. 而如果 firstTerm 小于 n,则作为系列的数字打印。否则,该系列已完成。