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

python小代码之阶乘求和

需求:

阶乘:也是数学里的一种术语;阶乘指从1乘以2乘以3乘以4一直乘到所要求的数;在表达阶乘时,就使用“!”来表示。如h阶乘,就表示为h!;阶乘一般很难计算,因为积都很大。

提问:求1+2!+3!+...+20!的和

实现环境:python3

编辑器:pycharm


分析:1、阶乘的计算就是比较麻烦的一部分,用递归函数实现是比较好的方案,先定义一个递归函数实现求阶乘功能。

1
2
3
4
5
6
7
8
def   recursion(n):
 
    '定义递归函数实现求阶乘功能'
if  n = = 1 :
     return  1
else :
 
     return   n * recursion(n - 1 )

2、求和思路,可以直接求和,也可以定义一个列表将for遍历遍历得到的阶乘结果追加到列表,然后使用sum()函数求和。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sum_0 = 0
print ( "for循环直接调用递归函数求和" .center( 80 , "*" ))  #显示效果明显
for   i   in  range ( 1 , 21 ):
     sum_0  + = recursion(i)
print (sum_0)
 
列表求和方案:
list = []  #定义一个空的列表,将调用递归函数生成的阶乘值追加到列表
print ( "将1-20的阶乘写入列表,使用sum函数求和" .center( 80 , "*" ))  #显示效果明显
for   i   in  range ( 1 , 21 ):
     list .append(recursion(i)) # 将调用递归函数生成的阶乘值追加到列表
print ( sum ( list ))  #列表求和
 
两者代码行数一样多都可以实现其功能。

使用知识点:递归函数 for循环 range()函数等。

完整源代码以及结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#/usr/bin/env python
#_*_coding:utf-8_*_
def   recursion(n):
     '定义递归函数实现求阶乘功能'
     if  n = = 1 :
         return  1
     else :
         return   n * recursion(n - 1 )
list = []  #定义一个空的列表,将调用递归函数生成的阶乘值追加到列表
 
print ( "将1-20的阶乘写入列表,使用sum函数求和" .center( 80 , "*" ))  #显示效果明显
for   i   in  range ( 1 , 21 ):
     list .append(recursion(i)) # 将调用递归函数生成的阶乘值追加到列表
print ( sum ( list ))  #列表求和
sum_0 = 0
print ( "for循环直接调用递归函数求和" .center( 80 , "*" ))  #显示效果明显
for   i   in  range ( 1 , 21 ):
     sum_0  + = recursion(i)
print (sum_0)
结果:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1 - 20 的阶乘写入列表,使用 sum 函数求和 * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2561327494111820313
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * for 循环直接调用递归函数求和 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2561327494111820313

    经过验证两者都可以实现基本的功能,但是未测试更大数据量的计算。



本文转自 tianya1993 51CTO博客,原文链接:http://blog.51cto.com/dreamlinux/1910979,如需转载请自行联系原作者

相关文章:

  • ibatis动态生成列时的列名无效
  • 通过构造函数来创建新对象
  • Python字符串、列表、元组、集合、字典方法
  • 【MongoDB学习笔记32】MongoDB修改副本集配置
  • iptables防火墙 --Linux详解
  • CentOS 7.2 安装图解教程
  • MongoDB主从
  • Linux系统使用lvm扩展根分区
  • 【人工智能】 火爆的机器学习和人工智能,为何在金融业四处碰壁?
  • 定制你的敏捷方法:以结果为导向
  • Java并发编程(六)发布与逸出
  • linux 查看网卡流量的方法
  • 自己制作 XP With SP3 系统光盘 包括驱动SATA集成AHCI驱动
  • 使用Maven运行单元测试
  • 创建服务
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • SegmentFault for Android 3.0 发布
  • [NodeJS] 关于Buffer
  • es6
  • ES6语法详解(一)
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Git的一些常用操作
  • Hexo+码云+git快速搭建免费的静态Blog
  • JSONP原理
  • k8s 面向应用开发者的基础命令
  • Spring Cloud Feign的两种使用姿势
  • windows-nginx-https-本地配置
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从零搭建Koa2 Server
  • 搞机器学习要哪些技能
  • 将 Measurements 和 Units 应用到物理学
  • 看域名解析域名安全对SEO的影响
  • 前端技术周刊 2019-02-11 Serverless
  • 前端面试之闭包
  • 说说动画卡顿的解决方案
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 一起参Ember.js讨论、问答社区。
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 大数据全解:定义、价值及挑战
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • "无招胜有招"nbsp;史上最全的互…
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (31)对象的克隆
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (动态规划)5. 最长回文子串 java解决
  • (力扣题库)跳跃游戏II(c++)
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)详解PHP处理密码的几种方式
  • (转)原始图像数据和PDF中的图像数据
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET 回调、接口回调、 委托