>  기사  >  백엔드 개발  >  Python 계승합 방법

Python 계승합 방법

angryTom
angryTom원래의
2020-02-14 10:08:3118606검색

Python 계승합 방법

Python 계승합 방법

문제 설명:

사용자가 입력한 정수 n을 가져와서 1!+2!+…+n! 값을 출력합니다.

입력 값이 0, 음수, 숫자가 아니거나 정수가 아닌 경우 다음 메시지가 출력됩니다. 잘못된 입력입니다. 양의 정수를 입력하세요.

(추천 학습: Python 동영상 튜토리얼)

방법 1:

#factTest1
def main():
    a = input()
    sum = 0
    if a.isdigit():
        n = eval(a)
        if n > 0:
            fact = 1
            for i in range(1, n+1):
                fact *= i
                sum += fact
            print(sum)
        else:
            print("输入有误,请输入正整数")
    else:
        print("输入有误,请输入正整数")
main()

방법 2: 재귀적 사고

#factTest2
import sys
sys.setrecursionlimit(5000)
def getSum(i):
    sum = 0
    if i==0:
        return 0
    else:
        for x in range(1,i+1):
            sum += fact(x)
        return sum
def fact(m):
    if m==0:
        return 1
    else:
        return m*fact(m-1)
def main():
    n = input()
    if n.isdigit():
        a = eval(n)
        if a>0:
            result = getSum(a)
            print(result)
        else:
            print("输入有误,请输入正整数")
    else:
        print("输入有误,请输入正整数")
main()

문제 요약:

recur를 사용할 때 1024의 계승값을 찾는 효과적인 방법 , 예외가 발생했습니다: RecursionError: 최대 재귀 깊이가 비교에서 초과되었습니다. 최대 재귀 깊이가 초과되었습니다. 일부 네티즌들은 파이썬의 기본 최대 재귀 깊이가 1000이라고 언급했는데, 실제 테스트에서 제 컴퓨터는 997에 도달했을 때 예외가 발생했습니다. 무엇이 이것을 결정하는지 모르겠습니다. 따라서 1024의 팩토리얼을 계산할 수 있으려면 최대 재귀 깊이에 더 큰 값을 부여해야 합니다. 여기서는 다음 방법을 사용할 수 있습니다.

import sys
sys.setrecursionlimit(5000) #修改为5000

또한 최대 재귀 깊이도 확인할 수 있습니다.

import sys
sys.getrecursionlimit()  # output:1000

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

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