javascript - 递归函数的最后一个元素返回未定义
问题描述
我写了一个递归函数来找到矩阵中的最大数字路径。只允许向下和向右移动。(如果你可以向下移动,你必须去)
我的问题不是关于算法,我真的很困惑为什么我在递归结束时得到不确定。我可以看到最后一个元素,它不是未定义的。谢谢你的帮助!:)
function solution(A = []) {
let c = A[0].length; // m
let r = A.length; // n
let pathLength = c + r - 1;
console.log(A[0][0]);
if (pathLength === 1) return A;
if (0 < c && A[0][0 + 1] > A[0 + 1][0]) {
//go right
A.forEach(element => {
element.shift();
});
solution(A, A[0][0]);
} else if (0 < r - 1) {
// go down
A.shift();
solution(A, A[0][0]);
}
}
const testcase = [
[9, 9, 7],
[9, 7, 2],
[6, 9, 5],
[9, 1, 2]
];
output:
9
9
7
9
5
2
undefined
解决方案
我认为length
最后需要-1,因为数组从0开始索引,但长度从1开始计数。
推荐阅读
- wordpress - 是否可以将多站点主站点产品显示到子站点中?
- python - 试图将多个精灵调用到屏幕上会导致故障?
- javascript - 从其样式对象访问元素
- node.js - MongoDb Node.js 驱动程序 - 我是否必须为每个操作关闭和打开连接?
- tensorflow - Tensorflow-gpu,没有属性“python_io”
- python - 通用 n 门蒙蒂霍尔问题模拟器
- python - 使用 python 将文件移动到特定目录获取错误文件已存在
- java - 复制到 vaadin 14 中的剪贴板组件
- javascript - 从选定的单选按钮显示输入文本框
- c - 编译“Hello World”程序时出错