我有Fibonacci程序,它计算并返回用户给出的Fibonacci数。但是我不知道如何打印出fibaux方法给出的返回值,例如输出:fib 46是1836311903。
import java.util.InputMismatchException;
import java.util.Scanner;
public class Fibonacci {
// main
public static void main(String[] args) {
try {
System.out.print("Enter number you would like to calculate ");
Scanner input = new Scanner(System.in);
int inputNumber = input.nextInt();
if (handleArguments(inputNumber)){
fib(inputNumber);
}
} catch (InputMismatchException exception) {
System.out.println("Input not an integer");
}
}
// Handle special case when n == 0
public static int fib(int n){
if(n == 0){
return 0;
}else{
int fibauxArray[] = fibaux(n);
return fibauxArray[0];
}
}
// Auxiliary function
// Return the nth and (n-1)th Fibonacci numbers
// n must be an integer >= 1
public static int[] fibaux(int n){
// base case for recursion
if(n == 1) {
return new int[] {1, 0};
// recursive case
}else{
int [] fibauxRecursive = fibaux(n - 1);
int f1 = fibauxRecursive[1];
int f2 = fibauxRecursive[0];
return new int[] {f1 + f2, f1};
}
}
static boolean handleArguments(int input) {
if (input >= 0 && input <= 46){
return true;
}else{
System.out.println("Error: number must be between 0 to 46");
return false;
}
}
}
答案 0 :(得分:2)
int a=fib(inputNumber);
以这种方式调用该函数。函数返回的值将存储在变量a
中。
打印值:
System.out.println(a);
查看要进行的更改:
public static void main(String[] args) {
try {
System.out.print("Enter number you would like to calculate ");
Scanner input = new Scanner(System.in);
int inputNumber = input.nextInt();
if (handleArguments(inputNumber)){
int a=fib(inputNumber); //value returned will be stored in a
System.out.println(a); //printing a
}
} catch (InputMismatchException exception) {
System.out.println("Input not an integer");
}
}
OR
只需提及System.out.println(fib(inputnumber));
而不是fib(inputnumber);
答案 1 :(得分:0)
看一下方法返回类型。我只是说它会返回一个int public static int fib(int n)
'。所以无论在一天结束时方法内部会发生什么,该方法都将返回一个int。因此,只需为其分配一个新变量并将其打印出来,如下所示。
int returnVal =fib(inputNumber);
System.out.println(returnVal);