博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python小代码之阶乘求和
阅读量:7077 次
发布时间:2019-06-28

本文共 1768 字,大约阅读时间需要 5 分钟。

需求:

阶乘:也是数学里的一种术语;阶乘指从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,如需转载请自行联系原作者

你可能感兴趣的文章
镭速分享文件传输共享的作用有哪些?
查看>>
Linux 磁盘管理 管理LVM逻辑卷 以及 RAID卷组成
查看>>
String StringBuffer StringBuilder
查看>>
bash的工作特性及命令状态返回查询
查看>>
Samba服务共享(匿名用户访问、本地用户访问、虚拟用户访问)
查看>>
HttpServletResponse输出乱码的问题
查看>>
你真的很熟分布式和事务吗?
查看>>
用二进制安装http
查看>>
C和C++中回调的总结
查看>>
jQuery一段时间内点击 button只执行一次click事件
查看>>
no talloc stackframe at ../source3/param/loadparm
查看>>
大数据开发和大数据分析有什么不同?
查看>>
JavaScript 从零开始_01.JavaScript数据类型
查看>>
正则表达式的一些小内容
查看>>
中国首款“智医助理”机器人系统日均辅助诊断13000余次
查看>>
MailRaider Pro for Mac(Outlook邮件格式转换工具) v3.5.0永久激活
查看>>
RPA或成为日本大银行“瘦身”潮的催化剂
查看>>
动态路由RIP
查看>>
rsync+inotify
查看>>
使用node-mysql中的连接池
查看>>