У меня есть программа, которая представляет собой простой алгоритм шифрования, который принимает строку и изменяет буквы в новую строку букв.Не могу понять, почему глубина рекурсии превышает предел
Функция помещает скремблированные буквы из алфавита в таблицу code
. В этой функции у меня есть функция checkRepeat
, чтобы убедиться, что письмо не повторяется. Когда я делаю это вручную (кроме частичной генерации целочисленного целого), это имеет смысл, но мой компьютер не нравится и превышает «глубину рекурсии».
from random import *;
string="Hello I am a computer";
alphTable=['a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','o','p','q','r','s','t','u','v','w','x',
'y','z'];
def checkRepeat(array,val):
global alphTable
for i in range(len(array)):
if val==array[i]:
location=randint(0,25);
array.append(alphTable[location]);
checkRepeat(array,val);
def makeEncryptTable():
encryptTable=[];
global alphTable;
for i in range (26):
location=randint(0,25);
encryptTable.append(alphTable[location]);
checkRepeat(encryptTable,encryptTable[i]);
return encryptTable;
array1=makeEncryptTable();
print(array1);
Вот код ошибки:
Traceback (most recent call last):
File "/home/brandon/Documents/CG 301/WilliamsBrandonStringEncrpytionAlgorithm.py", line 38, in <module>
array1=makeEncryptTable();
File "/home/brandon/Documents/CG 301/WilliamsBrandonStringEncrpytionAlgorithm.py", line 35, in makeEncryptTable
checkRepeat(encryptTable,encryptTable[i]);
File "/home/brandon/Documents/CG 301/WilliamsBrandonStringEncrpytionAlgorithm.py", line 27, in checkRepeat
checkRepeat(array,val);
...
File "/home/brandon/Documents/CG 301/WilliamsBrandonStringEncrpytionAlgorithm.py", line 27, in checkRepeat
checkRepeat(array,val);
File "/home/brandon/Documents/CG 301/WilliamsBrandonStringEncrpytionAlgorithm.py", line 25, in checkRepeat
location=randint(0,25);
File "/usr/lib/python3.4/random.py", line 218, in randint
return self.randrange(a, b+1)
File "/usr/lib/python3.4/random.py", line 194, in randrange
return istart + self._randbelow(width)
File "/usr/lib/python3.4/random.py", line 228, in _randbelow
if type(random) is BuiltinMethod or type(getrandbits) is Method:
RuntimeError: maximum recursion depth exceeded while calling a Python object
Вам не нужны все дополнительные ';'. 'python! = jQuery' – Pythonista
Почему вы используете рекурсию? 'global alphTable' также не требуется –
, вы вызываете' checkRepeat (array, val) 'из функции checkRepeat без изменения параметров. –