Java中使用递归和循环程序的斐波那契数列
什么是 Java 中的斐波那契数列?
斐波那契数列 在 Java 中是一系列数字,其中下一个数字是前两个数字的总和。斐波那契数列的前两个数是 0 和 1。斐波那契数显着用于算法的计算运行时研究,以确定两个整数的最大公约数。
在算术上,Wythoff 数组是一个由斐波那契数列产生的无限矩阵。
The Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
- 什么是 Java 中的斐波那契数列?
- 使用 For 循环的 Java 斐波那契数列程序
- 使用 While 循环在 Java 中编写斐波那契数列程序
- 在 Java 中使用递归的斐波那契数列
使用 For 循环的 Java 斐波那契数列程序
//Using For Loop
public class FibonacciExample {
public static void main(String[] args)
{
// Set it to the number of elements you want in the Fibonacci Series
int maxNumber = 10;
int previousNumber = 0;
int nextNumber = 1;
System.out.print("Fibonacci Series of "+maxNumber+" numbers:");
for (int i = 1; i <= maxNumber; ++i)
{
System.out.print(previousNumber+" ");
/* On each iteration, we are assigning second number
* to the first number and assigning the sum of last two
* numbers to the second number
*/
int sum = previousNumber + nextNumber;
previousNumber = nextNumber;
nextNumber = sum;
}
}
} 输出:
Fibonacci Series of 10 numbers:0 1 1 2 3 5 8 13 21 34
程序逻辑:
- previousNumber 初始化为 0,nextNumber 初始化为 1
- Fibonacci For 循环遍历
maxNumber - 显示上一个号码
- 计算 previousNumber 和 nextNumber 的总和
- 更新 previousNumber 和 nextNumber 的新值
使用 While 循环的 Java 斐波那契数列程序
您还可以使用 While 生成 Java 斐波那契数列 Java中的循环。
//Using While Loop
public class FibonacciWhileExample {
public static void main(String[] args)
{
int maxNumber = 10, previousNumber = 0, nextNumber = 1;
System.out.print("Fibonacci Series of "+maxNumber+" numbers:");
int i=1;
while(i <= maxNumber)
{
System.out.print(previousNumber+" ");
int sum = previousNumber + nextNumber;
previousNumber = nextNumber;
nextNumber = sum;
i++;
}
}
} 输出:
Fibonacci Series of 10 numbers:0 1 1 2 3 5 8 13 21 34
程序逻辑的唯一区别是使用 WHILE 循环打印斐波那契数
基于用户输入的斐波那契数列
//fibonacci series based on the user input
import java.util.Scanner;
public class FibonacciExample {
public static void main(String[] args)
{
int maxNumber = 0;
int previousNumber = 0;
int nextNumber = 1;
System.out.println("How many numbers you want in Fibonacci:");
Scanner scanner = new Scanner(System.in);
maxNumber = scanner.nextInt();
System.out.print("Fibonacci Series of "+maxNumber+" numbers:");
for (int i = 1; i <= maxNumber; ++i)
{
System.out.print(previousNumber+" ");
/* On each iteration, we are assigning second number
* to the first number and assigning the sum of last two
* numbers to the second number
*/
int sum = previousNumber + nextNumber;
previousNumber = nextNumber;
nextNumber = sum;
}
}
}
程序逻辑:
逻辑和前面一样。 Java Fibonacci Series 中不是硬编码要显示的元素数量,而是要求用户输入数字。
在 Java 中使用递归的斐波那契数列
下面是一个使用递归的Java斐波那契数列程序:
//Using Recursion
public class FibonacciCalc{
public static int fibonacciRecursion(int n){
if(n == 0){
return 0;
}
if(n == 1 || n == 2){
return 1;
}
return fibonacciRecursion(n-2) + fibonacciRecursion(n-1);
}
public static void main(String args[]) {
int maxNumber = 10;
System.out.print("Fibonacci Series of "+maxNumber+" numbers: ");
for(int i = 0; i < maxNumber; i++){
System.out.print(fibonacciRecursion(i) +" ");
}
}
}
输出:
Fibonacci Series of 10 numbers: 0 1 1 2 3 5 8 13 21 34
程序逻辑:
递归函数是具有调用自身能力的函数。
fibonacciRecursion():
- Java Fibonacci 递归函数接受一个输入数字。检查 0、1、2 并相应地返回 0、1、1,因为 Java 中的斐波那契数列以 0、1、1 开头。
- 当输入 n>=3 时,函数会递归调用自身。通话进行了两次。让我们看看使用递归示例输入 4 的 Java 斐波那契数列。
fibonacciRecursion (4) It will recursively call fibonacciRecursion function for values 2 and 3 fibonacciRecursion (2) \\ call for value 0 and 1 fibonacciRecursion (0) = 0 fibonacciRecursion (1) = 1 fibonacciRecursion (3) \\ It will call for 1 and 2 fibonacciRecursion (1) = 1 fibonacciRecursion (2) \\ It will call for 0 and 1 fibonacciRecursion (0) = 0 fibonacciRecursion (1) = 1
现在结果相加 0+1+1+0+1=3
java