Méthode de sommation factorielle en code python

高洛峰
Libérer: 2017-03-28 16:48:42
original
21724 Les gens l'ont consulté

Exigences :

Factorial : C'est aussi un terme en mathématiques ; factoriel fait référence à la multiplication de 1 fois 2 fois 3 fois 4 jusqu'au nombre requis, utilisez " !" Par exemple, la factorielle h est exprimée sous la forme h! ; la factorielle est généralement difficile à calculer car les produits sont très grands.

Question : Trouver la somme de 1+2 !+3!+...+20 !

Environnement d'implémentation : python3

Éditeur:pycharm

Analyse : 1. Le calcul de la factorielle est une partie gênante. C'est une meilleure solution d'utiliser une fonction récursive pour l'implémenter. fonction pour implémenter la fonction factorielle de solution.

def  recursion(n):
 
   '定义递归函数实现求阶乘功能'
if n==1:
    return 1
else:
 
    return  n*recursion(n-1)
Copier après la connexion

2. Idée de sommation, vous pouvez additionner directement, ou vous pouvez définir une liste pour ajouter le résultat factoriel obtenu par pour parcours à la liste, puis utiliser la somme ( ) fonction pour trouver et.

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)) #列表求和
Copier après la connexion

Les deux peuvent réaliser leurs fonctions avec le même nombre de lignes de code.

Utiliser des points de connaissances : fonctions récursives, boucles for, fonctions range(), etc.

Code source complet et résultats :

#/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
Copier après la connexion

Il a été vérifié que les deux peuvent réaliser des fonctions de base, mais les calculs avec de plus grandes quantités de données n'ont pas été testés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal