ホームページ >バックエンド開発 >Python チュートリアル >Pythonコードで階乗和を計算する方法

Pythonコードで階乗和を計算する方法

高洛峰
高洛峰オリジナル
2017-03-28 16:48:4221741ブラウズ

要件:

階乗: 数学の用語でもあります。階乗とは、1 x 2 x 3 x 4 を必要な数に掛けることを指します。階乗を表す場合は、「!」を使用します。たとえば、h 階乗は h! と表されます。階乗は積が非常に大きいため、一般に計算が困難です。

質問: 1+2!+3!+...+20! の和を求めてください! 実装環境:

python

3

Editor

: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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。