>  기사  >  백엔드 개발  >  파이썬 코드의 계승합산 방법

파이썬 코드의 계승합산 방법

高洛峰
高洛峰원래의
2017-03-28 16:48:4221701검색

요구사항:

팩토리얼: 수학에서도 사용되는 용어입니다. 팩토리얼은 1 곱하기 2 곱하기 3 곱하기 4를 필수 숫자로 곱하는 것을 의미하며, 팩토리얼을 표현하려면 " !"를 사용하세요. 예를 들어, h 계승은 h!로 표현됩니다. 곱이 매우 크기 때문에 일반적으로 계산하기가 어렵습니다.

질문: 1+2!+3!+...+20의 합을 구하세요!

구현 환경: python3

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

둘 다 기본 기능을 수행할 수 있는 것으로 확인되었지만 더 많은 양의 데이터를 사용한 계산은 테스트되지 않았습니다.

위 내용은 파이썬 코드의 계승합산 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.