我是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
答案 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)