Java 中使用递归和循环程序实现斐波那契数列

Java 中的斐波那契数列是什么?

Java 中的斐波那契数列是一个数字序列,其中下一个数字是前两个数字之和。斐波那契数列的前两个数字是 0 和 1。斐波那契数在算法的计算运行时间研究中被广泛用于确定两个整数的最大公约数。

在算术中,Wythoff 数组是由斐波那契数列生成的无限矩阵。

The Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, ...

使用 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
  • 斐波那契 For 循环迭代 maxNumber
    • 显示 previousNumber
    • 计算 previousNumber 和 nextNumber 的总和
    • 更新 previousNumber 和 nextNumber 的新值

使用 While 循环的 Java 斐波那契数列程序

您还可以使用 Java 中的 While 循环生成 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 斐波那契数列中的元素数量相反,用户被要求输入数字。

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()

  1. Java 斐波那契递归函数接收一个输入数字。检查 0、1、2 并相应地返回 0、1、1,因为 Java 中的斐波那契数列以 0、1、1 开始。
  2. 当输入 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