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

Java:For循环在递归函数中的一个元素之后停止

司健柏
2023-03-14

我从头开始在java中构建一个树结构。为了得到我的树的高度,我使用了递归函数。

每个note(IP)都包含一个它拥有的所有连接的列表,包括它们的父连接。我的想法是在所有孩子身上循环,并在不是家长的情况下再次调用高度函数。

我的问题是,它只调用一个孩子,而不会循环调用所有可能的孩子。也许有人能告诉我哪里是我的错。

如果一个音符有两个孩子,每个孩子还有另外两个孩子。它只在两次迭代中查看第一个。

 public int recursiveGetHight(final Node node, Node parent) {
    Node viewPoint = getViewPoint(node);
    int h = 0;
    for (Node child : viewPoint.getChildren()) {
        if (child.getChildren().size() <= 1) {
            return 0;
        } else if(parent == null || child.getValue() != parent.getValue()){
            h = recursiveGetHight(child, viewPoint) + 1;
            return h;
        }
    }
    return h;
}

埃克森佩尔:

root
    - note 1
        - sub note 1
        - sub note 2
            - x
            - y
    - note 2
        - sub note 1
         - z
        - sub note 2

int h = recurisvHeight(root, null)

result should be 3 but the function returns 2. 

如果我在for循环中执行打印命令

System.out.println(child);

它显示:注1子注1

共有1个答案

耿学义
2023-03-14

这是因为当你使用return时,你的函数就结束了。您必须删除第一个return=0,并为child创建一个ArrayList,并通过在列表中追加child来替换by循环中的return h。

 类似资料:
  • 给定一个值数组: 我想创建一个迭代函数,它可以存储任意长度数组中所有可能的值组合。 例如,在这种情况下,可能的值是(1,1,1)(1,1,2)(1,1,3)(1,1,4)(1,2,1)(1,2,2)(1,2,3)(1,2,4)(2,1,1)(2,1,2)(2,1,3)(2,1,4)(2,2,1)(2,2,2)(2,2,3)(2,2,4) 我知道要做到这一点,我需要使用一个递归函数,如果没有达到最大

  • 问题内容: 是否每个递归函数都有一个等效的for循环?(两者都达到相同的结果)。 我有这个递归函数: 假设单词是Set [],并且单词[i] =单词长度为i的集合。 我想做的是:使用一个单词(例如,“ stackoverflow”,没有空格)启动递归,我试图查找该单词是否可以切成子单词(“ stack”,“ over”,“ flow”) ..子词的最小长度为3,并且假设长度为i的子词在Set wo

  • 问题内容: 这是我的代码: 我想按降序打印数组,而不是按升序打印(从数组的最后一个元素到第一个元素),但我只会抛出此错误: 为什么会这样呢?我希望通过使用myArray.length将计数器设置为8,代码将只打印出数组的第8个元素,然后继续打印之前的那个元素。 问题答案: 在Java中数组索引从到,不给,因此,你应该相应地分配您的变量,并使用正确的比较操作。 您的循环应如下所示:

  • 嗯,我已经试过多次了。不过,我一度认为最长的序列函数会有所帮助,因为它显示的是最长的冰雹序列。尽管如此,我似乎不知道如何查找或存储它用于查找的值。如果有人能解释一下,我将不胜感激。 我遇到的问题是我最长的启动顺序: 我不知道如何将其转换为递归,我注意到对于一些递归,我看到人们仍然在使用for循环,但我确信我们不应该使用循环。这可能是一个愚蠢的问题,但如果有人知道的话,有没有一个公式可以将循环转换为

  • 问题内容: 我正在尝试使用setTimeout执行匿名函数,该函数会将信息传递给我,但出现了问题。这个(硬编码版本)可以正常工作: 但是我试图从数组中获取hello和world并将其传递给函数,而无需(a)使用全局变量,以及(2)使用eval。我知道如何使用globals或eval做到这一点,但是如果没有我怎么做。这是我想做的事情(但我知道这行不通): 当然,字符串[i]将脱离上下文。如何在没有e