【发布时间】:2017-12-05 21:54:44
【问题描述】:
我有一个关于使用 if 语句和递归的函数调用的问题。 我有点困惑,因为即使我的函数返回“False”,python 似乎也会跳入 if 语句块
这是一个例子:
1 def function_1(#param):
2 if function_2(#param):
3 #do something
4 if x<y:
5 function_1(#different parameters)
6 if x>y:
7 function_1(#different parameters)
我的 function_2 返回“False”,但 python 继续执行第 5 行的代码。谁能解释这种行为?提前感谢您的任何回答。
编辑:对不起,忘记括号
具体例子:
1 def findExit(field, x, y, step):
2 if(isFieldFree(field, x, y)):
3 field[y][x] = filledMarker
4 findExit(field, x + 1, y, step+1)
5 findExit(field, x - 1, y, step+1)
6 findExit(field, x, y + 1, step+1)
7 findExit(field, x, y - 1, step+1)
8 elif(isFieldEscape(field, x, y)):
9 way.append(copy.deepcopy(field))
10 wayStep.append(step+1)
def isFieldFree(field, x, y):
if field[y][x] == emptyMarker:
return True
else:
return False
def isFieldEscape(field, x, y):
if field[y][x] == escapeMarker:
return True
else:
return False
在 "isFieldFree" 和 "isFieldEscape" 两个函数都返回 False 后,python 会继续第 5 行的代码,有时会在第 6 行。
【问题讨论】:
-
if function_2:你确定这是你的意思吗? function_2 是一个函数吗? -
没有更具体的例子,真的帮不上忙。从上面看,如果
function_2()返回False,则递归结束。 -
@AChampion 感谢您的回复,添加了一个具体的例子。这是一个使用递归函数调用解决迷宫的示例。
标签: python function if-statement recursion