我开始编写一些简单的代码,最终成为填字游戏解决方案。在这个过程中,我使用了递归函数。输出真让我困惑。这是代码:
def checkMatcher(totalRows, prevCoor, count):
print(count)
if count < 3:
for coor in totalRows[count]:
if (prevCoor[0] == coor[0] or prevCoor[0] == coor[0] + 1 or prevCoor[0] == coor[0] - 1) and (prevCoor[1] == coor[1] or prevCoor[1] == coor[1] + 1 or prevCoor[1] == coor[1] - 1):
count += 1
checkMatcher(totalRows, coor, count)
return count
letterCoordinates = [
[(1,1),(9,7),(13,44),(9,99)],
[(1,2),(7,3),(12,12),(10,10)],
[(1,3),(8,88),(7,4),(82,11)]
]
#for firstletterCoor in letterCoordinates[0]:
count = checkMatcher(letterCoordinates, (1,1), 1)
print("Returned Count is " + str(count))
输出最终为:
1
2
3
Returned Count is 2
我的问题是,为什么不是返回的计数3?
答案 0 :(得分:1)
问题在于递归调用:
checkMatcher(totalRows, coor, count)
忽略了返回值。
答案 1 :(得分:1)
当count
等于1
时,它会递增1,然后传递给递归调用(打印2
并使用3
进行递归调用,然后打印3
)。当控件返回第一个电话时,count
仍为2
。
您需要考虑递归调用的返回值。