簡體   English   中英

為什么此Python代碼給出運行時錯誤(NZEC)?

[英]Why does this Python code give Runtime Error(NZEC)?

我已經閱讀了其他問題和答案,但是無法為我的代碼實現任何解決方案。 對於該代碼給出運行時錯誤的原因,我仍然一無所知。

我正在嘗試在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 ++)拋出異常,則可能會生成此錯誤。

我正在嘗試解決的問題:

https://www.codechef.com/problems/TRISQ

問題描述說輸入被限制為<10 ^ 4。 那是10,000! 您的代碼將需要對GetSquares進行10,000 / 4 = 2500的遞歸調用,這很多! 實際上,它的確足以給您這個錯誤:

RuntimeError: maximum recursion depth exceeded

您將不得不考慮一種更好的方法來解決不涉及太多遞歸的問題! 因為您正在進行此編碼挑戰,所以我不會在此答案中給出解決方案,因為那樣做可能會破壞目的,但是如果您想對答案提出一些建議,請隨時提出。

該問題對“ B ”的值(最大為10000)施加了約束,這意味着有很多遞歸調用並給出了運行時錯誤。 嘗試使用迭代求解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM