python小代码之阶乘求和

  • 2020 年 1 月 10 日
  • 笔记

需求:

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

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

实现环境:python3

编辑器:pycharm

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

def  recursion(n):       '定义递归函数实现求阶乘功能'  if n==1:      return 1  else:        return  n*recursion(n-1)

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

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()函数等。

完整源代码以及结果:

#/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

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