当前位置: 首页 > 知识库问答 >
问题:

在递归函数中首先返回最后一项

万俟超
2023-03-14

我需要一个递归函数,首先返回最深的项,因为反转数组和推到第一个位置很慢。

我有一个目标:

const myObject = {
    id: 3,
    parent: {
        id: 2,
        parent: {
            id: 1,
            parent: null,
        },
    },
};

和一个递归函数:

function findParents(myObject, parents = []) {
  if (myObject.parent) {
    parents.push(myObject.parent.id);
    return findParents(myObject.parent, parents);
  }

  return parents; // [2, 1]
}

我需要一个递归函数,它可以返回一个对象父id的数组,这样最后一个父id就位于返回数组的第一位。对于上面的例子,如果我将该对象传入我的函数,它应该返回父对象的id,如下所示:

[1, 2]

共有1个答案

窦志新
2023-03-14
function findParents(myObject, parents = []) {
  if (myObject.parent) {
    parents = findParents(myObject.parent, parents);
  }
  parents.push(myObject.id)
  return parents; // [2, 1]
}
 类似资料:
  • 我有以下递归javascript函数,它在Backbone.Marionette CollectionView的子级上循环,该子级具有依次为CollectionViews的ItemViews: 我是这样称呼它的: var view=DocumentManager.Documents.TreeRoot.FindViewByCID(model.cid); 问题是这一行: 如果我有这样的等级 然后te

  • 我有一个递归函数,它会重复这个函数,直到不满足if条件,然后输出一个整数。但是,此函数之外需要整数的函数正在接收一个单位。我应该如何修改代码以返回int? 这就是整个程序 }

  • 我正在编写一个递归函数,如下所示: 此函数用于接收员工并查找其管理者。如果找到管理器,则将管理器id推送到数组中($)- 所以我的问题是,如果我不在第6行返回递归调用(这是-

  • 问题内容: 我有一个计算税金的函数。 我不明白为什么它不能停止递归。 问题答案: 在您的职能部门中: 您没有从函数或设置中返回值。当您不返回任何内容时,返回值为。 也许,您想要这样:

  • 问题内容: 我有这段代码,由于某种原因,当我尝试返回路径时,我得到None: 有办法解决吗?提前致谢。 问题答案: 你需要返回递归结果: 否则,该函数仅在执行该语句后结束,导致None返回。 你可能要下降了,总是返回结尾: 因为如果是,False那么你也将在没有功能的情况下结束功能return。如果在这种情况下None递归不是正确的选择,而在返回则不是正确的选择,那么你也需要处理这种边缘情况。