精华内容
下载资源
问答
  • python小代码之阶乘求和
    千次阅读
    2020-12-13 18:39:32

    需求:

    阶乘:也是数学里的一种术语;阶乘指从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

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

    更多相关内容
  • 在本篇文章里小编给大家整理的是关于Python阶乘求和的代码实例,有需要的朋友们可以跟着学习下。
  • Python实现1阶乘到10阶乘相加之和 对于阶乘我们不得不想迭代,但其实除了迭代还有其他的办法,这里我将介绍我知晓的几种方法: 首先我们应知道迭代和递归的区别: 递归是针对于函数来讲的,我们常说函数递归...

    用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语言的函数调用(对于有返回值和无返回值,难度理解对比有很大的不同,特别是运用到了指针之后)。如觉得内容稍可,希望留下你们的
    在这里插入图片描述

    如有疑问,欢迎下方留言!

    展开全文
  • Python阶乘求和

    千次阅读 2021-07-08 11:19:50
    获得用户输入的整数n,输出 1!+2!+…+n!的值。 思路: 依次计算每个阶乘的值,然后相加起来,即可得到结果 代码: # 获得用户输入的整数n,输出 1!+2!+…+n!的值。 num = int(input("please input a number:")) num...

    题目:
    获得用户输入的整数n,输出 1!+2!+…+n!的值。

    思路:
    依次计算每个阶乘的值,然后相加起来,即可得到结果

    代码:

    # 获得用户输入的整数n,输出 1!+2!++n!的值。
    num = int(input("please input a number:"))
    
    sum = 0
    for i in range(1,num+1):
        x = 1
        for j in range(1,i+1):
            x = x * j
        sum = sum+ x
    print("1!+...+{}!的阶乘结果是{}".format(num,sum))
    
    
    

    运行截图:
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210708111954694.png

    展开全文
  • Python阶乘求和的方法

    千次阅读 2021-01-13 04:56:05
    Python阶乘求和的方法题目描述:获得用户输入的整数n,输出 1! 2! … n!的值。如果输入数值为0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。(推荐学习:Python视频教程)方法一:#factTest1def ...

    Python阶乘求和的方法

    题目描述:

    获得用户输入的整数n,输出 1! 2! … n!的值。

    如果输入数值为0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。

    (推荐学习:Python视频教程)

    方法一:#factTest1

    def main():

    a = input()

    sum = 0

    if a.isdigit():

    n = eval(a)

    if n > 0:

    fact = 1

    for i in range(1, n 1):

    fact *= i

    sum = fact

    print(sum)

    else:

    print("输入有误,请输入正整数")

    else:

    print("输入有误,请输入正整数")

    main()

    方法二:递归思想#factTest2

    import sys

    sys.setrecursionlimit(5000)

    def getSum(i):

    sum = 0

    if i==0:

    return 0

    else:

    for x in range(1,i 1):

    sum = fact(x)

    return sum

    def fact(m):

    if m==0:

    return 1

    else:

    return m*fact(m-1)

    def main():

    n = input()

    if n.isdigit():

    a = eval(n)

    if a>0:

    result = getSum(a)

    print(result)

    else:

    print("输入有误,请输入正整数")

    else:

    print("输入有误,请输入正整数")

    main()

    问题总结:

    当使用递归方法求1024的阶乘时,出现了一个异常:RecursionError: maximum recursion depth exceeded in comparison,超出了递归的最大深度。一些网友提到Python中默认的最大递归深度为1000,但在实际测试中,我的电脑到997的时候就出现异常了,不知道这是由什么决定的。因此,为了能够计算1024的阶乘,需要为最大递归深度赋予一个更大的值。这里可以采用以下方法:import sys

    sys.setrecursionlimit(5000) #修改为5000

    另外,也可以查看最大递归深度:import sys

    sys.getrecursionlimit() # output:1000

    展开全文
  • python代码之阶乘求和的方法

    千次阅读 2020-12-29 02:07:42
    阶乘指从1乘以2乘以3乘以4一直乘所要求的数;在表达阶乘时,就使用“!”来表示。如h阶乘,就表示为h!;阶乘一般很难计算,因为积都很大。提问:求1+2!+3!+...+20!的和实现环境:python3编辑器:pycharm分析:1、...
  • 今天小编就为大家分享一篇python 阶乘累加和的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Python练习:阶乘求和

    2021-11-02 01:07:45
    要求:输入n 之后返回从1到n的阶乘的和的后六位(不含前导0) 思考与实践:首先我们先用input来获取输入的数值,之后我们定义一个函数来实现阶乘的计算,用一个for in 将n及n以内的数遍历出来,之后将他们相乘。...
  • Python阶乘求和

    千次阅读 2021-02-05 17:04:33
    题目描述: 获得用户输入的整数n,输出 1!+2!+…+n!的值。 如果输入数值为0、负数、非数字或非...一些网友提到Python中默认的最大递归深度为1000,但在实际测试中,997的时候就出现异常了,不知道这是由什么决定的
  • 1、递归的特点 递归算法是一种直接或间接调用自身算法的过程,在计算机编程中,递归算法对解决一大类问题是十分,它往往使算法的描述简洁而且易于理解。 递归算法解决问题的特点: (1)递归就是在过程或函数里...
  • 要求:求和1!+2!+3!…+n!‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪...
  • 阶乘求和python

    2022-04-01 21:48:15
    描述 输入一个正整数n,计算1!+2!+3!+...+n!的和并输出。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪...从1到n每个数...
  • Python3 阶乘求和

    千次阅读 2019-04-20 08:41:06
    题目 求1+2!+3!+…+20!的和。 程序分析 1+2!+3!+…+20!=1+2(1+3(1+4(…20(1)))) res=1 for i in range(20,1,-1): res=i*res+1 print(res)
  • 问题:求1+2!+3!+…+20!的和。
  • 题目: 求1+2!+3!+…+20!的和。 程序分析: 1+2!+3!+…+20!=1+2(1+3(1+4(…20(1)))) # 从里往外加, #!/usr/bin/env python3 ... File Name: Python练习100【025】:阶乘求和 Author: zhangzx Date:
  • python入门——阶乘累计求和

    万次阅读 2018-07-28 19:52:41
    阶乘累计求和 描述 获得用户输入的整数n,输出 1!+2!+...+n!的值。 如果输入数值为0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。   输入格式 使用input()获得系统输入,不增加额外的提示...
  • 1 到10阶乘之和

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,971
精华内容 1,188
关键字:

python1到10的阶乘求和