我从头开始在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
这是因为当你使用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