python - 递归阶乘函数最大递归深度python
问题描述
大家好,我做了一个递归阶乘以将其与普通阶乘进行比较,问题是它只达到数字 5 并且在那里它被损坏了
错误:RecursionError:调用 Python 对象时超出最大递归深度
import time
def factorial(n):
res=1
while n>1:
res*=n
n-=1
return res
def factorial_r(n):
print(n)
if n==1:
return 1
return n*factorial_r(n-1)
if __name__=="__main__":
n=1000
c=time.time()
factorial(n)
f = time.time()
print(f-c)
c =time.time()
factorial_r(n)
f = time.time()
print(f-c)
这是 factorial_r 有什么我不太理解的吗?我做错了什么?
解决方案
我不知道您使用的是哪个版本的 Python,但问题是 Python 确实有递归限制。意思是,堆栈深度是有限的。这实际上是一个有用的功能,可以避免意外的无限递归循环。
请参阅Python 中的最大递归深度是多少,以及如何增加它?
他们建议的地方
import sys
sys.setrecursionlimit(1500)
推荐阅读
- sql - 是否可以在 ORACLE DBMS 中已继承的表中插入一行?
- javascript - 如何将数据从根 html 脚本传递到子级组件
- pyspark - 用另一个数据框pyspark中的值替换/查找火花df中一列的值
- date - NodaDateTime ZonedDateTimePattern Parse 无法识别偏移量
- c# - 如何将客户的 Azure Active Directory 与您的 SAAS 平台集成?
- node.js - 如何告诉 websocket 客户端身份验证失败
- c# - Acumatica:Acumatica Framework 20.101.32.42 升级后,扩展中的字段变得不可见
- c - 在 C 中包含 Guard 问题(编译器仍然报告重定义错误)
- solr - CDP 7.0.3 中的图集:找不到指定的配置集:vertex_index
- git - 分支定义不明确