我在做一道数学题,要求我将数字相乘并检查它们是否是回文。你知道吗
import sys
sys.setrecursionlimit(1000000)
import time
def values():
x=999
y=999
product=0
generator(x,y,product)
def generator(x,y,product):
while x >= 900:
product=x*y
strp=str(product)
check=strp[::-1]
print (check)
time.sleep(0.1)
if strp==check:
print ("done")
x=x-1
else:
y=y-1
generator(x,y,product)
values()
我使用的是Mac,它在循环中运行了几次,但随后显示了一个“Pytho quit unexpective”错误。你知道吗
你的程序正在崩溃,因为你的递归循环没有停止。当
x
达到900
的值时,generate
函数总是调用其代码的else
分支。您需要添加循环停止的条件。否则它会填满内存,使程序崩溃,因为递归循环对调用它们的次数有限制。你知道吗根据上面的答案,您的递归从未停止,因为一旦x=900,它总是通过调用else代码进行递归。你知道吗
我建议以下解决方案: a) 如果您有兴趣将y保持在999直到x为900,然后减小y直到它为900,您应该在else中添加以下内容(即执行999x999、999x998。。。999x900。。。998x900。。。900 x 900毫米):
b)如果您想在这两种情况下都递归(即并行减少):
我个人会推荐第二种解决方案,因为它更整洁。你知道吗
请注意,在两个循环上递归时,不需要while循环,if检查就足够了。你知道吗
相关问题 更多 >
编程相关推荐