我做了一個遞歸函數,它採用二進制代碼,應該轉換爲字母「A」,「T」,「C」和「G」。將二進制代碼解碼爲遞歸的字母
然後在這裏,它應該將該二進制代碼分配給下面的相應字母,但它不會移過第一個字母。你們中的任何人能幫我解決這個問題嗎?
def numeros(i,f):
e="100101"
if i >=len(e):
print f
else:
if e[i:i+1]=="1":
f=f+"G"
print f
numeros(i+1,f)
elif e[i:i+3]=="011":
f=f+"T"
print f
numeros(i+3,f)
elif e[i:i+3]=="010":
f=f+"A"
print f
numeros(i+3,f)
elif e[i:i+3]=="00":
f=f+"C"
print f
numeros(i+3,f)
numeros(0,"")
問題尋求幫助調試必須包括所期望的行爲,*(** ** 「爲什麼不是這個代碼工作的?」)一個特定的問題或錯誤*和*在問題本身**中重現它的最短代碼*。沒有**明確問題陳述**的問題對其他讀者沒有用處。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – MattDMo
你有一個錯字。當你檢查「C」時,你必須做'elif e [i:i + 2] =='00':'並在隨後的調用'numeros(i + 2,f)'中。這也沒有必要做遞歸。它可以用相同的邏輯迭代地完成。您正在有效解碼前綴代碼。 – Reti43