2016-02-14 23 views
-1

Так что я смотрю на код, который является более эффективным калькулятором фибоначчи, но я не понимаю, что означает возврат fiboux (n) [0]. Я пытаюсь преобразовать его в java, и у меня его почти нет, но я не понимаю эту часть. Спасибо!Что означает фибо (n) [0] в 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) 
    return f2 + f1, f2 

Хорошо спасибо, ребята! Я понимаю, что сейчас, но я предполагаю, что я не был на правильном пути в преобразовании это Java, потому что я не получаю правильные выходы, это то, что я писал:

public class Fibonacci { 

    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 f2 = Q[0]+Q[0]; 
    int f1 = Q[0]; 
    return new int[] {f2, f1}; 
} 

} 

Есть предложения? Еще раз спасибо.

+0

Он возвращает первый элемент кортежа, возвращаемый функцией 'fibaux'. – Maroun

ответ

1

fibaux возвращает tuple (непреходящее список) двух цифр:

>>> fibaux(3) 
(2, 1) 

[0] принимает элемент с индексом 0 (первый номер):

>>> fibaux(3)[0] 
2 

Я считаю, если вы переносите это на Java, вы либо захотите использовать fibaux(n).get(0) (если fibaux возвращает List) или fibaux(n)[0] (если fibaux возвращает Array)

Смежные вопросы