我正在尝试在Java中创建一个方法,该方法将fib系列打印到传递给该方法的数字。我的问题是,我需要使用int返回类型来返回系列,而不能使用递归。
我的第一个想法
我的原始想法就像显示的那样。哪个工作正常。它采用int类型的参数,并在打印计算出的数字时简单地将其返回,则返回void。
public void fibonacci(int num) {
int a = 0;
int b = 0;
int c = 1;
for (int i = 0; i < num; i++) {
a = b;
b = c;
c = a + b;
System.out.print(c + ", ");
}
}
问题要求什么
下面的代码显示了我的任务。它要求一种方法,该方法采用int类型的参数并返回int类型。
public int fibonacci(int num) {
//some code...
return x; //This is what confuses me. I know this isn't right.
}
在我看来,这似乎不切实际,甚至可能无法使用int返回类型。我想知道是否有人知道这是可能的方法。
预期产量:
//Method call in driver class.
fibonacci(5);
//This would print to console.
1, 1, 2, 3, 5
最佳答案
您可以使用公式[(h)^a - (j)^a] * [1/sqrt(5)]
。'a'
是斐波那契数字通缉'h'
是[1 + sqrt(5)] / 2'j'
是[1-sqrt(5)] / 2
public static int returnFibonacci(int a) {
double firstTerm; // calculate h
double secondTerm; //calculate j
double fib; //calculate 1/sqrt(5) with firstTerm and secondTerm
}