Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Fibonacci,获取数字列表并返回其Fibonacci数_Python_Python 3.x - Fatal编程技术网

Python Fibonacci,获取数字列表并返回其Fibonacci数

Python Fibonacci,获取数字列表并返回其Fibonacci数,python,python-3.x,Python,Python 3.x,我正在尝试实现一个函数,它将打印一些斐波那契数。例如,如果我的输入是斐波那契([0,1,2,3]),那么输出将是0,1,1,2 我不知道如何进行 def fibonacci(n): if n == 0: return 0 elif n == 1: return 1 return fibonacci(n - 1) + fibonacci(n-2) while True: n.append(n) print(fib

我正在尝试实现一个函数,它将打印一些斐波那契数。例如,如果我的输入是斐波那契([0,1,2,3]),那么输出将是0,1,1,2

我不知道如何进行

def fibonacci(n):

    if n == 0:
        return 0
    elif n == 1:
        return 1
    return fibonacci(n - 1) + fibonacci(n-2)

    while True:
        n.append(n)

print(fibonacci[5,10,11])

您可以稍微重构一下代码,并获得:

def fibonacci(lst):
    def getTerm(n):
        if n == 0:
            return 0
        elif n == 1:
            return 1
        return getTerm(n - 1) + getTerm(n-2)
    return [getTerm(x) for x in lst]
给出输出:

>>> fibonacci([0,1,2,3])
[0, 1, 1, 2]
>>> fibonacci([5,10,11])
[5, 55, 89]

避免重复计算:

def fibonacci(indices):
    fibs = {}
    set_of_indices = set(indices)
    f0 = fibs[0] = 0
    f1 = fibs[1] = 1
    for i in range(2,max(indices)+1):
        f2 = f0+f1
        if i in set_of_indices:
            fibs[i] = f2
        f0,f1=f1,f2
    return [fibs[i] for i in indices]

对于
fibonacci[5,10,11]
,您的输出应该是什么?`while True:n.append(n)`这一行永远不会中断。谢谢!我没有考虑在函数中创建函数。我会记住这一点以备将来参考。感谢。为什么
getTerm
需要在
fibonacci
中定义?