递归方法即使有条件也不会停止
Recursive method not stopping even with condition
即使达到条件递归也不会停止
bool answer = trouverMot(tab, bankMots, x - 1, y, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x + 1, y, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x, y - 1, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x, y + 1, (longueurMatch + 1), motNumero, positions1);
如果我替换这段代码:
bool answer = trouverMot(tab, bankMots, x - 1, y, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x + 1, y, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x, y - 1, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x, y + 1, (longueurMatch + 1), motNumero, positions1);
return answer;
与:
bool answer = trouverMot(tab, bankMots, x - 1, y, (longueurMatch + 1), motNumero, positions1) ||
trouverMot(tab, bankMots, x + 1, y, (longueurMatch + 1), motNumero, positions1) ||
trouverMot(tab, bankMots, x, y - 1, (longueurMatch + 1), motNumero, positions1) ||
trouverMot(tab, bankMots, x, y + 1, (longueurMatch + 1), motNumero, positions1);
return answer;
我得到了预期的输出 MANDOLINE
。
我认为您不想在已经成功后进行递归搜索(logical-or 运算符 short-circuits 评估,bitwise-or 运算符没有)。
即使达到条件递归也不会停止
bool answer = trouverMot(tab, bankMots, x - 1, y, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x + 1, y, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x, y - 1, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x, y + 1, (longueurMatch + 1), motNumero, positions1);
如果我替换这段代码:
bool answer = trouverMot(tab, bankMots, x - 1, y, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x + 1, y, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x, y - 1, (longueurMatch + 1), motNumero, positions1) |
trouverMot(tab, bankMots, x, y + 1, (longueurMatch + 1), motNumero, positions1);
return answer;
与:
bool answer = trouverMot(tab, bankMots, x - 1, y, (longueurMatch + 1), motNumero, positions1) ||
trouverMot(tab, bankMots, x + 1, y, (longueurMatch + 1), motNumero, positions1) ||
trouverMot(tab, bankMots, x, y - 1, (longueurMatch + 1), motNumero, positions1) ||
trouverMot(tab, bankMots, x, y + 1, (longueurMatch + 1), motNumero, positions1);
return answer;
我得到了预期的输出 MANDOLINE
。
我认为您不想在已经成功后进行递归搜索(logical-or 运算符 short-circuits 评估,bitwise-or 运算符没有)。