我得到一个堆栈溢出错误,因为我的递归创建了一个无限循环。把这个方法变成一个迭代可以阻止这种情况,但我不知道怎么做!
有人能指导我把递归变成循环吗?
private int findEmpty(int startPos, int stepNum, String key) {
if (arr[startPos] == null) {
return startPos;
}
return findEmpty(getNextLocation(startPos, ++stepNum, key), stepNum, key);
}
特别是 return findEmpty(getNextLocation(startPos, ++stepNum, key), stepNum, key);
这导致了错误!
2条答案
按热度按时间iqjalb3h1#
您的递归调用处于尾部位置。因此,它已经描述了一个循环。只需要从语法上说清楚:
我不使用java编写代码。如果以上代码在任何方面不符合要求,请将其视为伪代码并更改为合适的代码。
raogr8fs2#
如果
arr[startPos]
不是null
贯穿始终。你需要设置一个条件,比如: