用Python进行1的阶乘到10的阶乘相加的计算 您所在的位置:网站首页 用python循环算出1加到10 用Python进行1的阶乘到10的阶乘相加的计算

用Python进行1的阶乘到10的阶乘相加的计算

2024-07-15 20:17| 来源: 网络整理| 查看: 265

用Python实现1的阶乘到10的阶乘相加之和 对于阶乘我们不得不想到迭代,但其实除了迭代还有其他的办法,这里我将介绍我知晓的几种方法: 首先我们应知道迭代和递归的区别: 递归是针对于函数来讲的,我们常说函数递归调用,这是函数的一种调用方法。 而迭代是针对结构的,它是在结构里面的进行的,如在循环结构里面进行迭代。 了解了这些之后,下面进行方法讲解,首先我们先使用迭代法,具体代码及运行结果如下:

方法一:使用普通迭代方法求解 #方法一 def multiplication(i): sum =1 for j in range(1,i+1): sum *=j #这里我们使用迭代的方法对阶乘进行计算, return sum mul = 0 for i in range(1,11): mul +=multiplication(i) print("请输出1-10的阶乘之和:%d"%mul)

在这里插入图片描述 这是最终的结果,当然我们可以拆解这个步骤,与我发的1-500之间素数的和一样,首先要有个构思: 第一步,如何实现从一个数据开始并依次-1进行乘法,这肯定需要一个循环语句,那么又如何操作下去,进行迭代,设好变量,将所设变量进行持久往复使用。 第二步,那么我们现在开始实现一个阶乘的迭代,如代码所示,使sum和j一直进行使用,直接调用multiplication()函数实验,此时不考虑下方的for循环。 第三步,最后尝试用for循环将题目要求的1-10各数据进行遍历阶乘相加,得到结果。 这是第一种方法,接下来展示

方法二:使用递归函数调用求解 代码及运行结果如下: #方法二 def multiplication(i): sum = 1 if i==0: return 1 elif i>0: sum = i*scan(i-1) #在这里我们使用的是递归调用方法,用变量sum进行一个阶乘的值并返回 return sum else: return 0 mul = 0 for i in range(1,11): mul += multiplication(i) print("请输出1-10的阶乘之和:%d"%mul)

具体思路还是和上面一样,但是创建的递归函数是由函数自身进行相乘,这与上面讲的迭代和递归的区别进行理解,这里递归的原理不进行详解。

方法三:使用reduce函数进行迭代求解 #方法三 from functools import reduce #声明加载functools中的函数reduce,相当于C语言中的宏文件声明 def multiplication(i): a = 0 for j in range(1,i+1): #lamdba函数是自己所调用使用的虚拟函数,相当于对Java语言中的抽象类中的抽象方法进行重写 a +=reduce(lambda x,y:x*y,range(1,j+1)) #这里使用for循环进行1-10的数进行遍历阶乘,类似于迭代,最终用a承载并返回 return a #是方法一的简化版 print("请输出1!+...+10!之和为:{}".format(multiplication(10)))

首先介绍reduce函数的用法及工作过程,调用格式为:reduce(function ,sequence[,initial]) function为含有两个参数的函数,sequence是元组,列表等可迭代对象,initial为自定义的迭代初始值(可选可不选),在迭代sequence时,默认将前两个元素传给function,函数运行后将返回值与sequence中的第三个元素继续传给function进行计算,如此往下,依次进行。 我这里使用的是lamdba虚拟函数作为reduce函数内的函数使用,可理解为嵌套。lamdba是一个表达式,一个匿名函数,自己定义参数列表,自己定义函数主体。其他的作用及限制不再描述。 从代码中可看出相对于方法一来说,方法三更简便,至少少了一个for循环。具体内容还需要读者仔细推敲。 对于函数的嵌套,递归等,之后写一篇关于C语言的函数调用(对于有返回值和无返回值,难度理解对比有很大的不同,特别是运用到了指针之后)。如觉得内容稍可,希望留下你们的 在这里插入图片描述 , 如有疑问,欢迎下方留言!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有