首頁  >  文章  >  後端開發  >  python程式碼之階乘求和的方法

python程式碼之階乘求和的方法

高洛峰
高洛峰原創
2017-03-28 16:48:4221658瀏覽

需求:

階乘:也是數學裡的一個術語;階乘指從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程式碼之階乘求和的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn