我在python中有一个简单的函数:
def fun(num):
if num ==0:
return 0
if num==1 or num==2:
return 1
return fun(num-1) + fun(num-2)
我称之为:print fun(10)
。我希望收到一系列数字,但我得到这些数字的总和。我哪里错了?
答案 0 :(得分:0)
与评论一样,您的函数会生成一个值而不是列表(即数字序列)。阅读您的问题,看起来您正在尝试生成斐波那契序列。下面的函数将生成序列中的第n个术语,列表理解(在最终的打印语句中)将生成所需的数字序列。
In [18]:
def fib(Nth_Term):
if Nth_Term == 0:
return 0
elif Nth_Term == 1 or Nth_Term == 2:
return 1
return fib(Nth_Term - 1) + fib(Nth_Term - 2)
print fib(0)
print fib(1)
print fib(2)
print fib(3)
print fib(10)
print [fib(num) for num in range(0, 11)]
0
1
1
2
55
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
答案 1 :(得分:0)
我认为你打算将它们连接成一个字符串。您需要首先使用str(number)将字符串转换为字符串才能执行此操作。但即便如此,这个功能也毫无意义......这就是你的功能所做的:
fun(5)
=fun(4)+fun(3)
=fun(3)+fun(2)+fun(2)+fun(1)
=fun(2)+fun(1)+1+1+1
=1+1+1+1+1
fun(6)
=fun(5)+fun(4)
=1+1+1+1+1+1+1+1
所以最后,它只会将一堆组合在一起。有些东西告诉我那不是你想要的。
答案 2 :(得分:0)
可能你想做的是:
def fib_list(n):
if(n == 0):
return [1]
if(n == 1):
return [1,1]
f = fib_list(n-1)
f = f + [f[-1] + f[-2]]
return f
print fib_list(10)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]