我正在尝试创建一个允许用户输入数字的函数,结果将是一个包含斐波那契数字到列表输入的列表,如果输入不在系列中则包含一个。例如,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)
但是,我现在希望能够递归地做任何想法吗?
答案 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)
这是使用递归函数的简单解决方案。