如何正确在递归中写for循环?
这是LeetCode的#### 55. 跳跃游戏
var canJump = function(nums) {
let state = false;
let length = nums.length-1;
recur(length)
//递归函数 num是位置 list是数组
function recur(num){
//终止条件 有0就结束
if(num == 0){
state = 0 ;
return;
}
list = arrive(num);
if(list.length == 0){
return;
}
for(let i = 0; i < list.length; i++){
recur(list[i]);
}
};
//传递一个位置数字 返回可以到达的位置列表
function arrive(num) {
let list = [];
for(let i = 0; i < num; i++){
if(nums[i]+i == num){
list.push(i)
}
}
return list;
}
return state
};
应该循环两次 但是因为循环第一个内的递归不满足条件 后续的循环的第二次就不运行了 很迷惑 是因为递归不能用For吗
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你
return
了,要想继续递归,要执行recur
递归当然可以用循环呀,需要几个循环取决于问题本身,这个问题用一个循环就可以了,给个参考代码
递归搜索可以到达的子数组就可以了
另外,这个问题用递归可能会因超时而无法AC