在Python中我的Fibonacci序列计算有什么问题?

时间:2013-07-12 21:18:27

标签: python recursion fibonacci

我是Python的新手,想知道递归是否有效。我无法运行我的代码。它应该打印所有的斐波那契数字:

#!/usr/bin/python
import time, sys

def calc_fib_num(n):
  if (n >= 2):
    return calc_fib_num(n-1) + calc_fib_num(n-2)
  elif (n == 1):
    return 1
  else:
    return 0

print "0",
print "1",

for n in range(2,20):
  fib_num = calc_fib_num(n)
  print fib_num

4 个答案:

答案 0 :(得分:0)

我可以确认它在Python 2.7上对我有用。我只是将它粘贴到Python终端中:

Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> #!/usr/bin/python
... import time, sys
>>> 
>>> def calc_fib_num(n):
...   if (n >= 2):
...     return calc_fib_num(n-1) + calc_fib_num(n-2)
...   elif (n == 1):
...     return 1
...   else:
...     return 0
... 
>>> print "0",
0
>>> print "1",
1
>>> 
>>> for n in range(2,20):
...   fib_num = calc_fib_num(n)
...   print fib_num
... 
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
>>> 

当然,正如你所说,它不会打印所有斐波那契数字,只是前20个。

答案 1 :(得分:0)

它适合我,但需要一段时间。尝试将范围(2,20)中的“20”降低到较低值。我认为这只是一个性能问题。

答案 2 :(得分:0)

您无需为此问题导入任何库。尽管如此。

def fib(n):
    if n == 1:
        return 1
    elif n == 0:
        return 0
    else:
        return fib(n-1) + fib(n-2)

for n in range(2,20):
    print fib(n)

答案 3 :(得分:0)

def fib(n):
    return n if n<2 else fib(n-1) + fib(n-2)

for n in range(2,20):
    print fib(n)
相关问题