程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在java中设置递归程序的最大深度?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在java中设置递归程序的最大深度??

开发过程中遇到如何在java中设置递归程序的最大深度?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在java中设置递归程序的最大深度?的解决方法建议,希望对你解决如何在java中设置递归程序的最大深度?有所启发或帮助;

我用 java 编写了一个递归程序,它接受一个字符数组并有两种方法,一种是切换最左边两个图块的位置,另一个是将最右边的图块移动到最左边的图块的左侧。然后它返回移动的顺序,这使得数组按字母顺序排列,移动次数最少。它似乎有效,但我也应该设置最大深度(15),我想知道当它达到最大深度时我会返回什么?它现在似乎可以正常工作,但我不确定它是否正确。

这是代码的一部分:

 public static String Sorter(char[] letters){
        int nrOfMoves = 0;
        return Sorter(letters,nrOfMoves);
    }
    
    private static String Sorter(char[] letters,int nrOfMoves){
        if(sorted(letters)) return "";
        if(nrOfMoves >= 15) return "" ; //??
        
        switchleft(letters);
        String moveb = "b" + Sorter(letters,nrOfMoves+1);
        switchleft(letters);
        
        rightToleft(letters);
        String moves = "s" + Sorter(letters,nrOfMoves+1);
        leftToRight(letters);
        
        if(moves.length()<moveb.length()) return moves;
        return moveb;
    }

解决方法

这个例子看起来不错。就个人而言,我会使用 nrOfMoves++ 而不是 nrOfMoves+1

我会让它倒计时(剩下的移动次数而不是执行的移动次数)。这确保您的 Sorter 方法不需要知道它需要停止的深度。它只是限制了它可以执行的递归次数

public static String Sorter(char[] letters){
    int nrOfMoves = 15;
    return Sorter(letters,nrOfMoves);
}

private static String Sorter(char[] letters,int nrOfMoves){
    if(sorted(letters) || nrOfMoves <= 0){ 
       return "";
    }

    switchLeft(letters);
    String moveb = "b" + Sorter(letters,nrOfMoves--);
    switchLeft(letters);

    rightToLeft(letters);
    String moves = "s" + Sorter(letters,nrOfMoves--);
    leftToRight(letters);

    if(moves.length()<moveb.length()) return moves;
    return moveb;
}

大佬总结

以上是大佬教程为你收集整理的如何在java中设置递归程序的最大深度?全部内容,希望文章能够帮你解决如何在java中设置递归程序的最大深度?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: