gpt4 book ai didi

java - 递归法

转载 作者:行者123 更新时间:2023-12-01 19:08:30 26 4
gpt4 key购买 nike

我想在调用递归方法的最后检索一组带有结果的整数:{10,20,30}但是在这个程序中我遇到了问题,

  public static void main(String[] args) {
HashMap<Integer, Set<Integer>> myMap = new HashMap();
myMap.put(1, new HashSet(){{add(10);}});
myMap.put(2, new HashSet(){{add(20);}});myMap.get(2).add(30);
myMap.put(3, new HashSet());

HashSet<Integer> setInteg = new HashSet();
recursivFonc(setInteg, myMap, 1);
System.out.println(setInteg);
}

static HashSet recursivFonc(HashSet<Integer> setInteg, HashMap<Integer, Set<Integer>> map, int cont)
{
System.out.println(cont);
if(map.get(cont) != null)
{
Set<Integer> set = map.get(cont);
for(Integer intg : set)
{

setInteg.add(intg);
return recursivFonc(setInteg, map, cont);
}
}
return setInteg;
}

我如何才能以 {10,20,30} 结束一组?

最佳答案

for 循环中有一个 return 语句。因此,for 循环仅迭代一次。相反,请将 return 语句移到 for 循环之外。所以;循环将迭代集合的所有元素。

您可能还想在每次递归调用时递增cont。因为递归调用的退出点取决于map.get(cont)是否为null。如果您从不更改 cont 的值,则它最初为 1。每次调用该方法都会传递 1 并且它将持续很长时间(我猜直到内存不足)。

static HashSet recursivFonc(HashSet<Integer> setInteg, HashMap<Integer, Set<Integer>> map, int cont)
{
System.out.println(cont);
if(map.get(cont) != null)
{
Set<Integer> set = map.get(cont);
for(Integer intg : set)
{

setInteg.add(intg);
}
return recursivFonc(setInteg, map, cont + 1);
}
return setInteg;
}

关于java - 递归法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com