Python2递归函数返回以前执行的值
我开始写一些简单的代码,最终应该成为一个纵横字谜解决者。在这个过程中,我使用了一个递归函数。输出结果真让我困惑。代码如下:Python2递归函数返回以前执行的值,python,python-2.7,recursion,Python,Python 2.7,Recursion,我开始写一些简单的代码,最终应该成为一个纵横字谜解决者。在这个过程中,我使用了一个递归函数。输出结果真让我困惑。代码如下: 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] +
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))
我的问题是,为什么返回的计数不是3?问题是递归调用:
checkMatcher(totalRows, coor, count)
忽略返回值。问题在于递归调用:
checkMatcher(totalRows, coor, count)
忽略返回值。当
count
等于1
时,它将递增1,然后传递给递归调用(该调用打印2
,并使用3
进行递归调用,然后打印3
)。当控件返回到第一个调用时,count
仍然是2
您需要考虑递归调用的返回值。当
count
等于1
时,它将递增1,然后传递给递归调用(该调用打印2
,并使用3
进行递归调用,然后打印3
)。当控件返回到第一个调用时,count
仍然是2
您需要考虑递归调用的返回值。啊,我明白了,看起来我只是需要递归调用的返回值。谢谢啊,我明白了,看起来我只是需要一个递归调用的返回。谢谢