我試圖解決一個難題,即反向工程這個代碼,得到一個可能的密碼列表,並從那裏應該有一個'脫穎而出',並應該工作Python遞歸函數不遞歸
function checkPass(password) {
var total = 0;
var charlist = "abcdefghijklmnopqrstuvwxyz";
for (var i = 0; i < password.length; i++) {
var countone = password.charAt(i);
var counttwo = (charlist.indexOf(countone));
counttwo++;
total *= 17;
total += counttwo;
}
if (total == 248410397744610) {
//success//
} else {...
我的蟒蛇,我認爲應該工作寫的東西,我反向工程,其中它增加和乘法,並且有它嘗試每個字符,看它是否正確劃分爲偶數的順序。
from random import shuffle
def shuffle_string(word):
word = list(word)
shuffle(word)
return ''.join(word)
charlist = "abcdefghijklmnopqrstuvwxyz"
total = 248410397744610
temp = total
password = ''
runtime = 20
def runlist():
global charlist
global total
global temp
global password
global runtime
for i in range(25):
if (temp - (i+1)) % 17 == 0:
password += charlist[i]
temp -= i+1
temp = temp /17
if temp == 0:
print password
password = ''
temp = total
runtime += 1
charlist = shuffle_string(charlist)
if runtime < 21:
runlist()
else:
runlist()
但是當我嘗試運行它,我只得到
deisx
Process finished with exit code 0
我不知道爲什麼我的功能不正常遞歸,因爲它看起來像它應該從我所看到的。嘗試自己運行,看看會發生什麼。
這個謎題應該有多種解決方案(我認爲?),並且我計劃讓它能夠重複,直到它獲得所有解決方案,但是我爲什麼只是貫穿每個字母都有點失落,然後死亡。
編輯: 修改後的代碼實際上遞歸,但現在我沒有得到任何輸出,並且還退出碼0結束
編輯2:再次 修改後的代碼來修復錯誤
你的函數實際上並沒有遞歸 - 它無處自稱。 – nneonneo
在Python中,縮進是語法的一部分。遞歸調用在函數體外部, –
'if temp> 0:'的部分沒有縮進,這是故意的還是在您編輯問題時錯誤地滑動了? – alfasin