Python 2递归函数返回先前执行的值

时间:2017-01-25 20:12:25

标签: 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] + 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?

2 个答案:

答案 0 :(得分:1)

问题在于递归调用:

checkMatcher(totalRows, coor, count)

忽略了返回值。

答案 1 :(得分:1)

count等于1时,它会递增1,然后传递给递归调用(打印2并使用3进行递归调用,然后打印3)。当控件返回第一个电话时,count仍为2

您需要考虑递归调用的返回值。