首页 > 解决方案 > 递归函数的最后一个元素返回未定义

问题描述

我写了一个递归函数来找到矩阵中的最大数字路径。只允许向下和向右移动。(如果你可以向下移动,你必须去)

我的问题不是关于算法,我真的很困惑为什么我在递归结束时得到不确定。我可以看到最后一个元素,它不是未定义的。谢谢你的帮助!:)

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

标签: javascriptrecursion

解决方案


我认为length最后需要-1,因为数组从0开始索引,但长度从1开始计数。


推荐阅读