当前位置: 首页 > news >正文

python经典百题之求前!的和

题目:求1+2!+3!+…+20!的和

方法一:

使用for循环和阶乘函数计算每项的值,再将每项的值累加起来。

def factorial(n):if n == 0:return 1else:return n * factorial(n-1)sum = 0
for i in range(1, 21):sum += factorial(i) * iprint(sum)

优点:代码简单易懂,求解过程直观,适用于小规模的求和。

缺点:当计算的数值较大时,计算时间会较长且会占用较多的计算资源。

方法二:

使用reduce函数递归计算阶乘,并使用sum函数计算总和。

from functools import reducedef factorial(n):return reduce(lambda x, y: x * y, range(1, n+1))sum = sum(factorial(i) * i for i in range(1, 21))print(sum)

优点:采用reduce函数可以使代码更加简洁,适用于中等规模的求和。

缺点:reduce函数递归的特性会占用较多的计算资源,不适用于大规模的求和。

方法三:

使用生成器表达式和sum函数计算总和。

def factorial(n):result = 1for i in range(1, n+1):result *= iyield resultsum = sum(factorial(i) * i for i in range(1, 21))print(sum)

优点:采用生成器表达式可以避免占用过多的资源,适用于大规模的求和。

缺点:代码的可读性较差,容易理解错误。

综上所述,方法三是最推荐的方法,因为它既能保证效率,又不会占用过多的资源。

http://www.lryc.cn/news/170125.html

相关文章:

  • C语言入门Day_22 初识指针
  • 【面试必刷TOP101】删除链表的倒数第n个节点 两个链表的第一个公共结点
  • 手刻 Deep Learning -第壹章 -PyTorch教学-激励函数与感知机入门(上)
  • 物理内存分配
  • RFID产线自动化升级改造管理方案
  • 全量数据采集:不同网站的方法与挑战
  • Redis——渐进式遍历和数据库管理命令
  • 如何打造可视化警务巡防通信解决方案
  • ATF(TF-A) SPMC威胁模型-安全检测与评估
  • BIO AIO NIO 的区别
  • 大数据学习1.1-Centos8网络配置
  • 在Android studio 创建Flutter项目运行出现问题总结
  • Ceph入门到精通-ceph对于长文件名如何处理
  • vue+element-ui 项目实战示例详解【目录】
  • 性能测试-性能调优主要方向和原则(15)
  • 关于taos数据库使用过程中突发“unable to establish connection”问题解决
  • 【Qt】Qt中将字符串转换为数字类型的函数总结以及用法示例
  • 效率工具3-计算机网络工具
  • 2万多条汉字笔画笔顺查询ACCESS\EXCEL数据库
  • 我的一周年创作纪念日,感谢有你们
  • 【音视频】ffplay源码解析-PacketQueue队列
  • C++ 霍夫变换圆形检测
  • ​南阳师范学院图书馆藏《​乡村振兴战略下传统村落文化旅游设计》许少辉八一新著——2023学生开学季辉少许
  • 如何将你在树莓派上部署的 IoT 物联网 MQTT 服务发布到公网?
  • 系统架构设计师(第二版)学习笔记----软件工程
  • C与C++字符串分割方法示例汇总
  • HTTP代理与VPN:网络代理技术的比较
  • 免费低代码平台,助企业高效管理任务
  • 基于conda的相关命令
  • 【微信小程序】swiper的使用