<p>我使用列表制作了阶乘计算函数</p>
<pre><code>n = int(input("Enter a number: "))
def num2list(num):
first = [int(i) for i in str(num)]
return first
def multiplylists(x, y):
listx = x
listy = y
value=0
for n in range(len(listx)):
for m in range(len(listy)):
prod = listx[n]*listy[m]
power=10**((len(listx)-n-1)+(len(listy)-m-1))
value+=prod*power
return(num2list(value))
def factorial(n):
if n <= 1:
return [1]
return multiplylists(factorial(n-1), num2list(n))
print("the factorial of",n,"is",factorial(n))
</code></pre>
<p>这是一个大学项目,我认为教授的意图是使用类似于1000的列表来制作一个更快、更高效的阶乘函数</p>
<p>但是我的代码很慢,当number>;997</p>
<p>我犯了这样的错误</p>
<pre><code>Enter a number: 1000
Traceback (most recent call last):
File "part2.py", line 24, in <module>
print("the factorial of",n,"is",factorial(n))
File "part2.py", line 22, in factorial
return multiplylists(factorial(n-1), num2list(n))
File "part2.py", line 22, in factorial
return multiplylists(factorial(n-1), num2list(n))
File "part2.py", line 22, in factorial
return multiplylists(factorial(n-1), num2list(n))
[Previous line repeated 995 more times]
File "part2.py", line 19, in factorial
if n <= 1:
RecursionError: maximum recursion depth exceeded in comparison
</code></pre>
<p>我不知道当number>;997</p>