該函數做我想做的事情,但是當它完成時,它只是坐在那裏,而不是從我稱之爲的地方繼續,我無法弄清楚爲什麼。該代碼是:Python函數卡住了(沒有錯誤),但我不明白爲什麼
x = 9
y = 9
n = 10
ty = 1
tx = 1
while ty <= y:
while tx <= x:
vars()["p" + str(ty) + str(tx)] = 0
tx += 1
ty += 1
tx = 1
tn = 1
while tn <= n:
vars()["m" + str(tn)] = tn
tn += 1
t = x * y
tm = n
def recursion(z):
global tm
if z < n:
for x in range(n):
recursion(z + 1)
else:
if tm > 0:
tv = "m" + str(tm)
otm = eval(tv)
while eval(tv) < t - n + tm:
vars()[tv] = eval(tv) + 1
print(tv + " = " + str(eval(tv)))
vars()[tv] = otm + 1
print(tv + " = " + str(eval(tv)))
if tm > 1:
vars()["m" + str(tm - 1)] = eval("m" + str(tm - 1)) + 1
print(str("m" + str(tm - 1) + " = " + str(eval("m" + str(tm -1)))))
tm -= 1
recursion(1)
print("done")
我已經把在我希望它結束,但據我所知它不應該真正需要它的回報。
任何人都可以看到我做了什麼導致它卡住?
感謝
如果它卡住了,它不會做你想要的。每次遞歸都需要一個基本情況,它返回一個基本值,以及一個遞歸部分,其中實際函數調用是在return語句中進行的。你的功能不這樣做。 (return recursion(z + 1)) –
定義了哪個'n'? – dg99
@ dg99:和't',和'm1'和'm2' ...這段代碼很瘋狂!它看起來像是一個POCC(Python混淆代碼競賽)的入口。 – rodrigo