2016-02-14 60 views
-1

所以我在看一个更有效的斐波纳契计算器的代码,但我不明白什么返回fibaux(n)[0]的含义。我试图将其转换为Java,我几乎拥有它,但我不明白这一部分。谢谢!在python中,fibaux(n)[0]是什么意思?

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