javascript - JS 函数在递归调用期间返回“未定义”
问题描述
我正在尝试解决这个问题,我必须在数组中添加任意 2 个数字,并且总和应该等于特定的目标数字。我已经使用循环做到了这一点,但我决定也使用递归来做到这一点。请告诉我我做错了什么?
谢谢
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function (nums, target) {
function findIndices(i, j) {
const possibleTarget = nums[i] + nums[j];
if (possibleTarget === target) {
return [i, j];
} else if (j <= nums.length - 1) {
findIndices(i, j + 1);
} else {
findIndices(i + 1, j + 1);
}
}
return findIndices(0, 1); //undefined
};
解决方案
在这样的两个递归调用之前添加return
,以便递归获得的结果返回到调用链:
var twoSum = function (nums, target) {
function findIndices(i, j) {
const possibleTarget = nums[i] + nums[j];
if (possibleTarget === target) {
return [i, j];
} else if (j <= nums.length - 1) {
return findIndices(i, j + 1);
} else {
return findIndices(i + 1, j + 1);
}
}
return findIndices(0, 1); //undefined
};
推荐阅读
- spring-webflux - 将通量/单声道反序列化为 Feign Spring Cloud 的问题
- javascript - Node.js:如何执行 PUT 请求来上传文件?
- jquery - 选择后如何禁用下一个选择?
- spring-boot - Spring Boot 端点无法重定向到我的视图
- mysql-workbench - 如何对 MySQL Workbench 连接进行分组?
- reactjs - 导航栏不会在路由器位置更改时重新渲染
- java - 如何单击表格中的元素按特定文本搜索
- c# - 为什么 File.OpenRead() 将相对路径附加到可执行文件?
- python - 如何使用 django 中的按钮动态显示模型中的数据?
- c# - 如何在mvc中保持点击事件动态创建的按钮