gpt4 book ai didi

Java使用递归void函数的结果,将每个结果添加到列表中并在另一个函数中返回

转载 作者:行者123 更新时间:2023-12-02 03:43:38 25 4
gpt4 key购买 nike

我正在使用我偶然发现的递归算法的修改版本来返回一组数据的所有组合。例如:如果数据集恰好是[“ABCD”,“ACDEF”,“ABDFG”,“BDEF”,“CGEGD”],我希望在列表中包含以下内容,即每个唯一元素都与指定长度的另一个唯一元素。

A B C ,A B D ,A B E ,A B F ,A B G ,A C D ,A C E ,A C F ,A C G ,A D E ,A D F,A D G ,A E F ,A E G ,A F G ,B C D ,B C E ,B C F ,B C G ,B D E ,B D F ,B D G ,B E F ,B E G ,B F G ,C D E ,C D F ,C D G ,C E F ,C E G ,C F G ,D E F ,D E G ,D F G ,E F G

这是迄今为止我的类(class):

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

class Comboo {

public static void combinationAssShit(String arr[], String data[], int start, int end, int index, int r){

if (index == r)
{
for (int j=0; j<r; j++)
System.out.print(data[j]+" ");

System.out.println("");
return;
}

for (int i=start; i<=end && end-i >= r-index; i++)
{
data[index] = arr[i];
combinationAssShit(arr, data, i+1, end, index+1, r);
}
}

public static void printCombination(String arr[], int n, int r)
{
String data[]=new String[r];
combinationAssShit(arr, data, 0, n, 0, r);
}

public static String[] singleElem(String[] data) {
List<String> single = new ArrayList<String>();

for (String element: data) {
for (int x = 0; x < element.length(); x++) {
single.add(Character.toString(element.charAt(x)));
}
}

Set<String> singleS = new LinkedHashSet<String>(single);

List<String> singleL = new ArrayList<String>();

singleL.addAll(singleS);

String[] john = singleL.toArray(new String[singleL.size()]);
return john;
}

public static void main (String[] args) {
String arr[] = {"ABCD", "ACDEF", "ABDFG", "BDEF", "CGEGD"};
int r = 3;

String[] t = singleElem(arr);
int n = t.length;
printCombination(t, n, r);
}
}

请注意。我知道还有很多需要修正的地方。我也是 Java 新手。我习惯了 C++ 和 Python,在这个问题的情况下,通过从组合生成器生成结果来收集列表中的组合要容易得多。

最佳答案

如果您想要返回最终结果(字符串),您可以将递归过程中的所有代码放入另一个帮助程序方法中,并让初始方法调用该帮助程序并返回结果。当然,您还需要使递归助手和您的方法都不为 void,以便通过 return 传递结果。

关于Java使用递归void函数的结果,将每个结果添加到列表中并在另一个函数中返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36555367/

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