• 100个python算法超详细讲解:多项式之和


    1.问题描述
    计算下列多项式的值:

     2.问题分析
    方法一:把上面多项式中的每一个分项标上记号,第一个式子的记号为
    1,第二个式子的记号为2,第三个式子的记号为3,以此类推。可以发现式子
    的分母与记号之间的关系如表4.2所示。
    表4.2 分母与记号间的关系

     通过表4.2可以发现,每一项分式的分母都是对应项标记的阶乘。所以只
    要求出每一项的阶乘再将其倒数和加在一起即为所求多项式的结果。
    方法二:整体去看每一个分式之间的联系,每一个分式用一个字母来代
    替,第一个分式用t1表示,第二个分式用t2表示,以此类推,如表4.3所示。
    表4.3 分式间的联系

     由表4.3可以看出,后面一项等于前一项乘以当前项数的倒数,如果这里
    的每一项都用同一个变量t表示,那么第i项就可以用公式表示为t=t*1/i。这样
    可以只用一层循环来实现,循环变量i控制对应的项数,取值范围为1~n。
    3.算法分析

    n的阶乘算法为:n!=1×2×3×4×5×…×n,可用循环来实现。代码如下:

    1. t = 1 # t记录每一项分式的分母,每次循环之前给t赋初值
    2. j = 1
    3. while j <= i:
    4. t = t * j # 每一项的阶乘
    5. j += 1

    对于每一项都是求出其分母即项数i对应的阶乘,是一个循环重复的过
    程,故可用另外一层循环来控制项数,范围为1~n。代码如下:

    1. i = 1
    2. while i <= n: # i控制对应的项数

    对于存储阶乘的变量t,每一次记录新的阶乘之前都要把其值赋为1,否
    则下一项的阶乘值会受上一项的影响,所以在每次执行内层循环求下一项阶
    乘之前,要把t的值再次赋为1。
    方法二的算法分析此处省略,后面将给出相关程序。
    4.确定程序框架
    程序流程图如图4.6所示。

    5.完整的程序

    方法1:

    1. #!/usr/bin/python3
    2. # -*- coding: utf-8 -*-
    3. # @author : liuhefei
    4. # @desc: 多项式之和
    5. if __name__ == "__main__":
    6. n = int(input("请输入一个整数n: "))
    7. s = 0 # s记录多项式的和
    8. i = 1
    9. while i <= n: # i控制对应的项数
    10. t = 1 # t记录每一项分式的分母,每次循环之前给t赋初值
    11. j = 1
    12. while j <= i:
    13. t = t * j # 每一项的阶乘
    14. j += 1
    15. s = s + 1/t
    16. i += 1
    17. print("%f" %s)

     方法2:

    1. #!/usr/bin/python3
    2. # -*- coding: utf-8 -*-
    3. # @author : liuhefei
    4. # @desc: 多项式之和
    5. if __name__ == "__main__":
    6. s = 0 # s记录多项式的和
    7. n = int(input("请输入一个整数n: "))
    8. t = 1
    9. for i in range(1, n+1): # i<=n,i控制对应的项数
    10. t = t*1/i #将分式的值赋给变量t
    11. s = s + t
    12. print("%f" %s)

    6.运行结果
    在PyCharm下运行程序,屏幕上提示“请输入一个整数n:”,这里输入50,
    运行结果如图4.7所示。

     

  • 相关阅读:
    link 和 @important 的区别
    多进程启动不同的python程序
    基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程(一)
    spring-cloud-alibaba-dubbo-issues1805修复
    深入理解Linux文件描述符
    3D打印服务展示预约小程序的效果如何
    EMQX Enterprise 5.2 发布:Flow 设计器,Amazon Kinesis,Azure Event Hubs
    【电源专题】案例:为什么芯片支持0.8V的工作电压,但EN却又要高达1.25V?
    NFC技术的定义通信方式
    Git说明
  • 原文地址:https://blog.csdn.net/tysonchiu/article/details/124956886