python 实现尾递归斐波那契数列

看了一下 《 Python 简明教程》,发现了一个很有意思的项目,它推荐了这个项目来练手。这个项目是一份列表,关于用任何语言都可以实现的程序的项目。有兴趣可以实现一下。

我在这里写一下简单的斐波那契数列。

1
2
3
4
5
6
7
8
9
10
11
12
13
def (a, b, n):
if n == 0:
return a
return fibonacci(b, a + b, n - 1)

if __name__ == '__main__':
while True:
n = None
try:
n = input('>> ')
except EOFError:
exit()
print(fibonacci(0, 1, int(n)))

使用了尾递归。可以用 lambda 减少代码:

1
2
fib = lambda n, x=0, y=1: x if not n else fib(n-1, y, x+y)
print("lambda:" + str(fib(int(n))))