Так вот код питона:Преобразование кода фибоначчи python в java?
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 (п - 1)) не прямо в моем Java code.here является 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};
}
в питона, f2 и f1 разные значения, но в моем Java кода Q [] и R [] имеют одинаковое значение, так что не рассчитывает правильные result.I не понимаю, как сделать это Работа? Спасибо!
Почему вы возвращающая одно значение в массиве? Кроме того, откуда взялся «R»? –
Если вы просто хотите перевести Python на Java, вы должны сохранить одну и ту же организацию, например public static int fib (int number) - вернуть число для двух случаев, а не массивы, и нет необходимости в Q и R, просто используйте один результат из рекурсии, как и в Python. –
Я рассматривал Q [] как f2 и R [] как f1 из кода python. И да, вы правы, функция fib() не нуждается в возврате массива. – Jessica