Java 将嵌套循环替换为递归

Java 将嵌套循环替换为递归,java,Java,我有一个3级嵌套循环。内部的值取决于紧挨着上面的值。现在的表演真的是个杀手O(n*n*n)。此外,即时循环中也可能有某些out.println,需要打印。如何用递归替换,或者是否有其他方法可以避免嵌套循环并提高性能 示例代码: String[] strArray = getOuterArray(); for(String x : strArray){ String[] internalStrArray = x.getArray(); System.out.prin

我有一个3级嵌套循环。内部的值取决于紧挨着上面的值。现在的表演真的是个杀手O(n*n*n)。此外,即时循环中也可能有某些out.println,需要打印。如何用递归替换,或者是否有其他方法可以避免嵌套循环并提高性能

示例代码:

String[] strArray = getOuterArray();
for(String x : strArray){
        String[] internalStrArray = x.getArray();
        System.out.println("I am in first");
    for(String x: internalStrArray){
        String[] internalinStrArray = x.getArray();
        System.out.println("I am in second");
        for(String x: internalinStrArray){
            System.out.println("I am in third "+ x);
        }
    }
}

public String[] getOuterArray(){
}

public String[] getArray(){
}

递归不会比循环更快。事实上,由于将函数调用推到堆栈上,它可能会非常慢


现在你的代码毫无意义,你正在循环中打印“我在第一/第二/第三”。你实际上没有做任何算术上可以改进的事情。我唯一的主要建议是不要将所有变量都命名为x,这非常令人困惑


只要您有这三个循环,并且想要进行所有的打印,就没有什么可以让它运行得更快。

递归可能不会提高性能。。。这可能会使代码更紧凑,更容易阅读,但这是另一回事。嗯?如果你真的需要运行n^3次,那么即使你使用递归,它仍然是n^3。为什么递归会改变O(nnn)?如果有的话,它只会烧穿你的堆栈。我不知道你的代码在没有编译的情况下如何运行
x
String
并且
String
没有
getArray
方法。我完全不知道你想编写什么样的算法。请发布一些真实的代码。“我唯一的主要建议是不要把所有变量都命名为x,这非常令人困惑”。。。它也不是合法的Java。不能让一个循环和嵌套在其中的另一个循环具有相同的循环变量。这只是一个示例Sysout。实际上,它编写了一个小逻辑,我用Sysout替换了它。它甚至不是字符串数组,而是我们正在使用的内部框架的对象数组来代替字符串数组。只是试图复制类似的逻辑。很抱歉搞混了。只是想了解是否有可能避免此类嵌套循环。@user2800970取决于您正在做什么。如果您正在进行搜索,您可以使用二进制搜索,但如果您正在对一组对象进行搜索,而这些对象中有一个包含要处理的实际数据的列表,则似乎没有办法解决此问题。@user2800970有时您需要嵌套循环。有时,您可以通过拉出内部循环并将其放入子例程来提高代码的可读性,但这不会提高性能。我们唯一能做的就是研究一个算法,看看是否有更有效的方法来实现这个特定的算法;但是你的代码中没有算法。