Python3.2中的Fibonacci序列

时间:2014-05-19 11:55:20

标签: python fibonacci nameerror

我真的需要你的帮助。我知道这个问题已经被无数次问了,但我仍然无法找到答案......

我需要在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

有人能告诉我递归函数的正确代码是什么吗?

3 个答案:

答案 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