初学python算法100例-案例24 求分数数列和

Posted 技术专家团-小兔子编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学python算法100例-案例24 求分数数列和相关的知识,希望对你有一定的参考价值。

题目:求分数数列和

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

解法1 常规思维

程序分析

1、分析分子与分母的规律

2、下一项的分母是前一项的分子

3、下一项的分子是前一项的分子与分母之和

代码编写

n = int(input("请输入一个数:"))
a = 2.0
b = 1.0
s = 0
for n in range(1,n+1):
    s += a / b
    t = a
    a = a + b
    b = t
print("数列前%d项和为:%.2f"%(n,s))

运行结果

请输入一个数:5
数列前5项和为:8.39

 

解法2 python

程序分析

和解法1一样,知识在交换的时候用了python特有的赋值方式

代码编写

n = int(input("请输入一个数:"))
a = 2
b = 1
s = 0.0
for i in range(1,n+1):
    s += a/b
    a,b = a+b,a
print("数列前%d项和为:%.2f"%(n,s))

运行结果

请输入一个数:6
数列前6项和为:10.01

解法2 list

程序分析

1、和解法1类似,只是把每一个分数值加入到列表中

2、最后对列表的项求和

代码编写

from functools import reduce
n = int(input("请输入一个数:"))
a = 2
b = 1
lst = []
for i in range(1,n+1):
    lst.append(a/b)
    a,b = a+b, a
print("数列前%d项和为:%.2f"%(n,reduce(lambda x,y: x + y,lst)))

运行结果

请输入一个数:10
数列前10项和为:16.48

还有更多其他的解法,欢迎一起交流学习

 

以上是关于初学python算法100例-案例24 求分数数列和的主要内容,如果未能解决你的问题,请参考以下文章

初学python算法100例-案例27 等差数列递归求法

初学python算法100例-案例14 成绩划分等级你还不会吗

初学python算法100例-案例28 逆序输出每位数字

初学python算法100例-案例25 阶层求和 学完你也会

初学python算法100例-案例18 完数有那么难么

初学python算法100例-案例17 输出并计算n个 逐项数字