【发布时间】:2020-07-04 15:11:33
【问题描述】:
我正在使用字符串“BANANA$”创建一个后缀树。当从 main 调用我的 findPath 函数为“print(findPath(root, “BANANA$”, 5))”,因此检查“A$”是否是来自根的路径时,我得到以下输出:
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
它打印出“REACHED THE END!”行,很明显该函数已经触及了代码的那部分,但是为什么我的函数没有在“return 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
【问题讨论】:
-
函数是递归的。所以递归调用返回后,调用者继续。
-
谢谢。我添加了一个最初设置为 False 的全局变量,而不是在我的函数中“返回 True”,而是将变量设置为 True,然后返回变量而不是“返回 False”
标签: python function return terminate suffix