我正在尝试在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

}

10-08 13:24
查看更多