|
发表于 2019-8-8 13:46:36
|
显示全部楼层
- #题目:斐波那契数列。又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……。从第三项开始,后项为前两项之和
- #试通过程序输出数列前100项。
- #解法1,采用循环迭代变量,
- def answer1():
- n1 = 1 #定义数列第1项
- n2 = 1 #定义数列第2项
- list1 = [n1,n2]
- for i in range(1,99): #循环98次生成3-100项
- n = n1 + n2
- list1.append(n) #计算后项并从后加入目标数列
- n1, n2 = n2, n #重新将n2,n的数据赋值给n1,n2进行迭代。
- print(list1)
- print(len(list1))
- #解法2:可选择传入数列项数进行迭代,默认值为100,采用while循环
- def answer2(t=100):
- t = t
- n1 = 1 # 定义数列第1项
- n2 = 1 # 定义数列第2项
- list1 = [n1, n2]
- loop = 0 # 定义循环控制变量
- while loop < t-2:
- n = n1 + n2
- list1.append(n)
- n1, n2 = n2, n
- loop += 1
- print(list1)
- #解法3:采用自定义函数Fib(n),输入参数后通过通项公式递归求解前20项。
- def answer3(n=20):
- def Fib(n):
- if n ==1 or n == 2:
- return 1 #递归终点
- else:
- return Fib(n-1) + Fib(n-2) #抽象出通项公式递归
- list1 = [] #值加入列表输出
- for i in range(1,n+1):
- list1.append(Fib(i))
- print(list1)
-
- if __name__ == '__main__':
- answer1()
- answer2()
- answer3(20)
复制代码 |
|