java - 将python斐波那契代码转换为java?

标签 java python fibonacci

这是Python代码:

def fib(n):
  ## Handle special case when n == 0
  if n == 0:
    return 0
  ## General case, return the first of the
  ## two values returned by fibaux
  else:
    return fibaux(n)[0]

## Auxiliary function
## Return the nth and (n-1)th Fibonacci numbers
## n must be an integer >= 1
def fibaux(n):
  ## Base case of for recursion
  if n == 1:
    return 1, 0
  else:
    ## Recursive case
    f2, f1 = fibaux(n - 1) ## **this is the part I cant figure out in java**
    return f2 + f1, f2

代码的 ** 部分 (f2, f1 = fibaux(n - 1)) 在我的 java 代码中不正确。这是 java 代码:

public static int[] fib(int number){
  if (number == 0){
     return new int[] {0};
  }
  else{
     int fibauxArray[] = fibaux(number);
     int f3 = fibauxArray[0];
     return new int[] {f3};
  }
}

public static int[] fibaux(int number){
  if (number == 1){
     return new int[] {1, 0};
  }
  else{
     int[] Q = fibaux(number-1);
     int[] R = fibaux(number-1);
     int f2 = Q[0] + R[0];
     int f1 = Q[0];

     return new int[] {f2, f1};
 }

在python中,f2和f1是不同的值,但在我的java代码中Q[]和R[]是相同的值,所以它不能计算出正确的结果。我不明白如何使其工作?谢谢!

最佳答案

尝试:

public static int fib(int number){
  if (number == 0){
     return 0;
  }
  else{
     int fibauxArray[] = fibaux(number);
     return fibauxArray[0];
  }
}

public static int[] fibaux(int number){
  if (number == 1){
     return new int[] {1, 0};
  }
  else{
     int[] Q = fibaux(number-1);
     int f2 = Q[0];
     int f1 = Q[1];

     return new int[] {f2+f1, f2};
 }
}

关于java - 将python斐波那契代码转换为java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35398370/

相关文章:

java - 开发中如何避免在编译时浪费时间?

java - 如何通过不对数据库进行 N 次调用来获取实体集合中的惰性属性

python - 向请求添加单个证书

c - 小于给定 n 的斐波那契数列的数量

python - 斐波那契数,在 Python 3 中使用单线?

java - Eclipse - 导出可运行的 JAR 文件(弹出警报)

java - sonar-scanner-maven 分支构建失败

python - 如何从 numpy 中的两个向量获得所有对的笛卡尔积?

python - 为什么(或为什么不)将 Anaconda 添加到路径中?

c - 斐波那契数列c程序