вы можете воспользоваться массив и использовать его как этот
Фибоначчи [я] = Фибоначчи [я-1] + fibonnaci [я-2] это улучшит выполнение кода очень много, потому что рекурсивный функции могут иметь высокую сложность, вы бы не заметили различия в небольших значениях, но с большими значениями, например, фибоначчи [1000], вы заметите разницу, с которой вы можете заставить ваш процессор и память страдать и принести их на колени, поэтому я дам вам Fibonacci1, что ваша версия и Fibonacci2 проще версия:
Fibonacci1
import java.util.Scanner;
public class Fibonacci1 {
public static void main(String[] args) {
System.out
.println("enter the upper bound of the serie(Size of the array of fibonacci serie):");
Scanner scanner = new Scanner(System.in);
int size = scanner.nextInt();
int fibonacci[] = new int[size];
for (int i = 0; i < size; i++) {
fibonacci[i] = fibonacci(i+1);
}
System.out.println("enter a number between 1 and " + size);
int j = scanner.nextInt();
while (j < 0 || j > size) {
if (j < 0) {
System.out.println("j<0");
}
if (j > size) {
System.out.println("j>" + size);
}
System.out.println("please enter a number between 1 and " + size);
}
System.out.println("Fibonacci[" + j + "]=" + fibonacci[j - 1]);
scanner.close();
}
public static int fibonacci(int number) {
if (number == 1 || number == 2) {
return 1;
}
return fibonacci(number - 1) + fibonacci(number - 2);
}
}
Fibonacci2:
пакет StackOverflow;
import java.util.Scanner;
public class Fibonnaci {
public static void main(String[] args) {
System.out
.println("enter the upper bound of the serie(Size of the array of fibonacci serie):");
Scanner scanner = new Scanner(System.in);
int size = scanner.nextInt();
int fibonacci[] = new int[size];
for (int i = 0; i < size; i++) {
fibonacci[i] = fibonacci(i + 1, fibonacci);
}
System.out.println("enter a number between 1 and " + size);
int j = scanner.nextInt();
while (j < 0 || j > size) {
if (j < 0) {
System.out.println("j<0");
}
if (j > size) {
System.out.println("j>" + size);
}
System.out.println("please enter a number between 1 and " + size);
}
System.out.println("Fibonacci[" + j + "]=" + fibonacci[j - 1]);
scanner.close();
}
/*
* changed the fibonacci function in order to use the already calculated
* fibonacci elements
* fibSerie[n]=fibonnaci[n-1]
* fibSerie[n-1]=fibonnaci[n-2];
* fibSerie[n-2]=fibonnaci[n-3];
* because arrays start from 0 so fibSerie[1]=fibonnaci[0];
*/
public static int fibonacci(int number, int[] fibonacci) {
if (number == 1 || number == 2) {
return 1;
}
return fibonacci[number - 2] + fibonacci[number - 3];
}
}
Итак, в чем же вопрос? - http://stackoverflow.com/help/how-to-ask – radoh