我已经阅读了其他问题和答案,但无法实现我的代码的任何解决方案。我仍然对此代码产生运行时错误的原因一无所知。
我正在尝试在CodeChef上提交代码,但它提供了运行时错误(NZEC),尽管代码在我的控制台上运行完美无缺。这是我的代码:
def GetSquares(base):
if not base or base < 4:
return 0
else:
x = (base - 4) - (base % 2) + 1
return x + GetSquares(base - 4)
num_test = int(input())
for test in range(num_test):
base = int(input())
print (int(GetSquares(base)))
Codechef对NZEC的解释:
NZEC代表非零退出代码。对于C用户,这将是 如果您的main方法没有返回0,则生成;声明。 Java / C ++等其他语言如果抛出就会产生这个错误 例外。
我正在努力解决的问题:
答案 0 :(得分:3)
问题描述表明输入被限制为&lt; 10 ^ 4。那是10,000!你的代码需要对GetSquares进行10,000 / 4 = 2500次递归调用,这很多!事实上,它是如此之多,它恰好会给你这个错误:
RuntimeError: maximum recursion depth exceeded
你将不得不考虑一种更好的方法来解决不涉及这么多递归的问题!因为你正在做这个编码挑战,我不会在这个答案中给出一个解决方案,因为这会破坏目的,但是如果你想要一些针对答案的刺激,请随意提问。
答案 1 :(得分:0)
这个问题限制了' B '的值,最大值为10000,这意味着存在大量递归调用并产生运行时错误。尝试使用迭代求解。