我真的需要你的帮助。我知道这个问题已经被无数次问了,但我仍然无法找到答案......
我需要在bla-bla.py文件中递归编程一个fibonacci序列,这是我到目前为止所做的:
print("Unendlicher Fibonacci-Generator Rekursiv")
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
for n in fib(n):
print (str(n))
但我总是得到一个NameError" name' n'没有定义"这让我发疯了...我只是无法理解一个人怎么能打印" Python中变量的值!请帮忙!
我试图在"中使用"摆脱这个NameError。我之前编写过一个Fibonacci发生器,它完全正好与#34; for ... in"。我明白我需要某种迭代才能工作。所以这是可行的版本:
print("Unendlicher Fibonacci-Generator")
def fibonacci():
a, b = 0, 1 #a=0, b=1
while True:
yield a
a, b = b, a + b
f = fibonacci()
counter = 0
for x in f:
print ("fib(" + str(counter) +") = " +str(x))
counter +=1
if (counter > 25): break
有人能告诉我递归函数的正确代码是什么吗?
答案 0 :(得分:1)
您的代码存在一些问题。
1)fib(n)
- n
未定义。而是传递一个特定的数字,例如:fib(5)
2)in
- 你不能in int
。只需按如下方式打印函数调用的结果:
print(fib(12))
[OUTPUT]
144
这是获取值列表的非递归方法:
def fib(n,):
l = [0, 1]
for i in range(n-2):
l.append(l[-1]+l[-2])
return l
>>> print fib(10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
答案 1 :(得分:-1)
print("Unendlicher Fibonacci-Generator Rekursiv")
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
print fib(12)
####### or a number which given by user
a=input("enter a number : ")
print("fibonacci(",a,") = ",fib(a))
答案 2 :(得分:-2)
print("Unendlicher Fibonacci-Generator Rekursiv")
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
row=[fib(n) for n in range(1,25)]
print row