生成斐波那契数列的 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,
在上面的程序中, firstTerm
和 secondTerm
分别用0和1初始化(斐波那契数列的前两位数字)。
在这里,我们使用 for
循环来
- 打印该系列的
firstTerm
- 通过
firstTerm
和secondTerm
相加计算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 ) 之内的数列。
为此,我们只需要比较 firstTerm
和 n
. 而如果 firstTerm
小于 n
,则作为系列的数字打印。否则,该系列已完成。