gpt4 book ai didi

java - 如何在递归函数中存储数组?

转载 作者:行者123 更新时间:2023-11-30 03:54:33 25 4
gpt4 key购买 nike

我有一个排列递归数组,它工作得很好,但我需要存储结果,而不仅仅是打印出来,我必须将每个打印输出存储在一个单独的数组中,或者将整个打印存储在一个数组中

原文如下:

public static void Permute(String soFar, String rest)  
{
if (rest.isEmpty())
{
System.out.println(soFar);

}
else
{
for (int i =0; i < rest.length(); i++)
{
String next = soFar + rest.charAt(i);
String remaining = rest.substring(0,i) + rest.substring(i+1);
Permute(next,remaining);
}
}
}

我改变了它,但问题是 return arr 在那里不正确,我应该做点别的事情因为 arr 会变空,因为会调用其他递归函数,而我不想要它

public static String Permute(String soFar, String rest,String arr)  
{
if (rest.isEmpty())
{
// System.out.println(soFar);
arr+=soFar;
}
else
{
for (int i =0; i < rest.length(); i++)
{
String next = soFar + rest.charAt(i);
String remaining = rest.substring(0,i) + rest.substring(i+1);
Permute(next,remaining,arr);
}
}
return arr;
}

最佳答案

将您的 arr 参数更改为列表。然后,不要使用 println(),而是继续添加到此列表中。另外,当您第一次调用 permute 时,请确保传入已分配的列表。就像这样:

public void ParentFunction()
{
List<String> results = new ArrayList<String>();
Permute(..., ..., results);
// Now you have all results inside "results" variable.
}

public static void Permute(String soFar, String rest, List<String> results)
{
if (rest.isEmpty())
{
//System.out.println(soFar);
results.add(soFar); // ADD TO RESULT LIST
}
else
{
for (int i = 0; i < rest.length(); i++)
{
String next = soFar + rest.charAt(i);
String remaining = rest.substring(0, i) + rest.substring(i + 1);
Permute(next, remaining, results);
}
}
}

关于java - 如何在递归函数中存储数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23577844/

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