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 중국어 웹사이트의 기타 관련 기사를 참조하세요!