近来学习到了递归的思想,好奇心的驱使下开始寻找可以使用递归方式实现的试题。
机缘巧合下找到了斐波那契数列的试题,结合了自己的思考,在处理斐波那契数列的问题上感觉收获很多
借着技术贴的机会分享下,新人上路,希望大神们多多指点,跪拜orz.........
#实现斐波那契数列的第一种方式:递归
#定义一个fibo函数,通过递归方式实现斐波那契数列
def fibo(n):
#排除斐波那契数列的第一项和第二项
if n == 1 or n == 2:
#数列的前两项都是1
return 1
if n >= 3:
#递归方式实现:返回一个新项等于前两项之和
return fibo(n-1)+fibo(n-2)
i = 1
while i <= 50:
print(fibo(i))
i += 1
#递归方式实现斐波那契数列对于系统资源占用及其严重,不建议使用
#注意python3中规定递归深度默认为1000
#实现斐波那契数列的第二种方式:迭代
def fibonacci(t):
a_list = []
# 从0开始
n = 0
m = 1
for i in range(t):
a_list.append(m)
# 前两个数的累加赋值
n,m = m,n+m
return a_list
print(fibonacci(15))
#迭代方式实现对于系统资源占用较低且可指定实现次数
#实现斐波那契数列的第三种方式,实现n以内的斐波那契数列的输出
def fibo(n):
a, b = 0, 1
while b < n:
print(b)
a, b = b, a+b
#此种实现方式可方便指定某个整数内的所有斐波那契数列数列所有项。 |
|