How to print a Fibonacci series up to a given number in Java?

Fibonacci series is a special type of series in which the next number is the sum of the previous two numbers. For example, 1 1 2 3 5 8 13 21…. up to a given number.

Solution #1 : Using Recursion

FibonacciSeriesWithRecursion.java

package com.javacodepoint.programs;

import java.util.Scanner;

public class FibonacciSeriesWithRecursion {

	// initiating first two numbers of the Fibonacci series
	static int number1 = 0;
	static int number2 = 1;

	public static void main(String[] args) {

		// Taking input from the user to print Fibonacci series up to how many numbers

		System.out.println("Enter number up to which Fibonacci series to print:");

		// Reading user input using Scanner object
		int upto = new Scanner(System.in).nextInt();

		// Printing first two numbers
		System.out.print(number1 + " " + number2);

		// Calling recursive function by decreasing 2 because two numbers are already printed
		printFibonacci(upto - 2);

	}

	/*
	 * Recursive function
	 */
	public static void printFibonacci(int count) {

		if (count > 0) {
			int nextNumber = number1 + number2;
			number1 = number2;
			number2 = nextNumber;

			System.out.print(" " + nextNumber);

			// Call the recursive function again
			printFibonacci(count - 1);
		}
	}
}

OUTPUT:

Enter number up to which Fibonacci series to print:
12
0 1 1 2 3 5 8 13 21 34 55 89

Solution #2 : Without Using Recursion

FibonacciSeries.java

package com.javacodepoint.programs;

import java.util.Scanner;

public class FibonacciSeries {

	public static void main(String[] args) {

		// Taking input from the user to print Fibonacci series up to how many numbers

		System.out.println("Enter number up to which Fibonacci series to print:");

		// Reading user input using Scanner object
		int upto = new Scanner(System.in).nextInt();

		// Initiating first two numbers of the Fibonacci series
		int number1 = 0;
		int number2 = 1;

		// Printing first two numbers
		System.out.print(number1 + " " + number2);

		// Start the loop from 3 because first two numbers are already printed
		for (int i = 3; i <= upto; i++) {
			int nextNumber = number1 + number2;
			System.out.print(" " + nextNumber);
			number1 = number2;
			number2 = nextNumber;
		}
	}
}

OUTPUT:

Enter number up to which Fibonacci series to print:
10
0 1 1 2 3 5 8 13 21 34