边写边学Python(6)斐波那契数列
题目:斐波那契数列。程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。在数学上,费波那契数列是以递归的方法来定义:F0 = 0(n=0)F1 = 1(n=1)Fn = F[n-1]+ F[n-2](n=>2)代码:#!/usr/bin/python#定义斐波那契数列def fib(n):a
·
题目:斐波那契数列。
程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
在数学上,费波那契数列是以递归的方法来定义:
F0 = 0 (n=0) F1 = 1 (n=1) Fn = F[n-1]+ F[n-2](n=>2)
代码:
#!/usr/bin/python
#定义斐波那契数列
def fib(n):
a,b = 0,1
for i in range(n-1):
a,b = b,a+b
return a
# 输出了第10个斐波那契数列
print (fib(10))
运用递归:
#!/usr/bin/python
# 使用递归
def fib(n):
if n==1:
return 0
if n==2 or n==3:
return 1
return fib(n-1)+fib(n-2)
# 输出了第10个斐波那契数列
print (fib(10))
输出指定个数的斐波那契数列:
#!/usr/bin/python
def fib(n):
#前两项的值单独定义
if n == 1:
return [1]
if n == 2:
return [1, 1]
#大于三项的情况,先创建一个含有前两项的列表
fibs = [1, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs
# 输出前 10 个斐波那契数列
print (fib(10))
输出结果:
输入个数:10
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
但是上述代码未考虑到输入个数为负数的情况,输入为负数仍然可以输出。
所以,下面是完善的代码:
#!/usr/bin/python
def fib(n):
if n <= 0:
print('请输入一个正数。')
#前两项的值单独定义
if n == 1:
return [0]
if n == 2:
return [0, 1]
#大于三项的情况,先创建一个含有前两项的列表
if n > 2 :
fibs = [0, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs
# 输出前 n 个斐波那契数列
n = int(input('输入个数:'))
print (fib(n))
输出结果:
输入个数:-3
请输入一个正数。
None
输入个数:10
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
更多推荐
已为社区贡献6条内容
所有评论(0)