要件:
階乗: 数学の用語でもあります。階乗とは、1 x 2 x 3 x 4 を必要な数に掛けることを指します。階乗を表す場合は、「!」を使用します。たとえば、h 階乗は h! と表されます。階乗は積が非常に大きいため、一般に計算が困難です。
質問: 1+2!+3!+...+20! の和を求めてください! 実装環境:
pythonEditor:pycharm 分析: 1. 階乗の計算が面倒な部分このうち、
再帰関数を使用して実装する方が良い解決策です。まず、階乗関数を実装するための再帰関数を定義します。 def recursion(n):
'定义递归函数实现求阶乘功能'
if n==1:
return 1
else:
return n*recursion(n-1)
2. 合計の考え方は、直接合計することも、
トラバーサルで取得した階乗結果をリストに追加するリストを定義し、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 サイトの他の関連記事を参照してください。