在元组中制作斐波纳契

时间:2014-04-15 09:58:46

标签: python

def make_fibonacci(n):
    if n == 0:
        return (0,)
    count = 1
    while n > count:
        a , b = 0, 1
        c = a +b
        a,b = b,c
        count += 1
        return (b,c)
    return (0,) + (b,c)

这是我的代码,我无法获得所需的输出。

make_fibonacci(5)

(0, 1, 1, 2, 3, 5)

有什么问题?

3 个答案:

答案 0 :(得分:2)

return循环中有while,因此它当然不会迭代。

看起来好像在考虑做一些递归的事情,但你实际上没有递归部分,即从内部调用make_fibonacci()

我建议放弃元组的想法,而是专注于构建一个简单的数字列表,然后在你完成后转换为元组。

答案 1 :(得分:0)

以下是您的代码的简化版本,不需要recursion

def make_fibonacci(n):
    result = [0,1]
    if n < 1:
        return [0]
    count = 1
    while count < n:
        count += 1
        result.append(result[-1]+result[-2])
    return result

>>> print make_fibonacci(5)
[0, 1, 1, 2, 3, 5]

答案 2 :(得分:0)

像这样使用

def make_fibonacci(n):
    if n == 0:
        return (0,)
    count = 1
    x = [0]
    a, b = 0, 1
    while n >= count:
        count += 1
        a, b = b, a+b
        x += [a]

    return tuple(x)

if __name__ == '__main__':
    print make_fibonacci(5)

输出是:

(0, 1, 1, 2, 3, 5)