Я создаю дерево суффиксов, используя строку "BANANA $". При вызове моей функции findPath из main как "print (findPath (root," BANANA $ ", 5))", поэтому, проверяя, является ли "A $" путь из root, я получаю следующий вывод:
SEQUENCE: A$
CUR CHILD: $
NON-MATCH: $ 0
CUR CHILD: A
CHILD MATCHED: A
NEW SEQ: $
SEQUENCE: $
CUR CHILD: $
REACHED THE END!
CUR CHILD: BANANA$
CUR CHILD: NA
False
Она выводит строку «ДОСТИГНУТЬ КОНЕЦ!», Поэтому ясно, что функция коснулась этой части кода, но почему моя функция не завершает работу после строки «вернуть True»?
def findPath(curNode, sequence, i):
sequence = sequence[i:]
print("\nSEQUENCE: " + sequence)
for child in curNode.children:
print(" CUR CHILD:", child.val)
# print(len(child.val), child.val)
# NO WAY IT CAN BE A MATCH, SO SKIP
if (len(child.val) > len(sequence)):
pass
# POSSIBILITY TO MATCH
else:
curInd = 0
count = 0
# CHECK IF child.val MATCHES THE BEGINNING OF sequence
while (curInd < len(child.val)):
if (child.val[curInd] != sequence[curInd]):
print(" NON-MATCH:", child.val[curInd], curInd)
count += 1
curInd += 1
# child.val MATCHES THE BEGINNING OF sequence
if (count == 0):
# AN EXACT MATCH, SO REACHED THE END
if (child.val == sequence):
print("REACHED THE END!")
return True
else:
print(" CHILD MATCHED:", child.val)
newInd = len(child.val)
sequence = sequence[newInd:]
print(" NEW SEQ:", sequence)
findPath(child, sequence, 0)
return False