计算斐波纳契数至少为n

时间:2017-03-05 18:39:33

标签: python list recursion fibonacci

我正在尝试创建一个允许用户输入数字的函数,结果将是一个包含斐波那契数字到列表输入的列表,如果输入不在系列中则包含一个。例如,4的输入将返回[0, 1, 1, 2, 3, 5],但3的输入将返回[0, 1, 1, 2, 3]。我已设法使用以下功能执行此操作:

    def fibonacci(n):
        series = [0]
        if (n == 0):
            pass
        else:
            series.append(1)
            if (n == 1):
                pass
            else:
                while(series[len(series)-1] < n):
                    newValue = series[len(series)-1] + series[len(series)-2]
                    series.append(newValue)
        print(series)

但是,我现在希望能够递归地做任何想法吗?

2 个答案:

答案 0 :(得分:1)

可能的解决方案如下

n

这个想法是,要返回小于n-1的所有斐波纳契数列表,您可以要求列出那些小于[1, 1]的列表,然后可能只添加一个元素。如果我们将前两个数字定义为[0, 1],则从2开始工作。使用$check_email = $DBcon->query("SELECT email FROM tbl_users WHERE email='$email' OR username = '$uname'"); 代替2会产生问题,因为单个下一个元素是不够的。

这段代码在时间上效率不高(fibonacci是一个双递归,这是一个简单的递归),但是使用了大量的堆栈空间。

答案 1 :(得分:1)

 def calculate_fibonnaci(number):
     if n == 0:
         return 0
     if n == 1:
         return 1
     else:
         return calculate_fibonnaci(n-1) + calculate_fibonnaci(n-2)

这是使用递归函数的简单解决方案。