大佬教程收集整理的这篇文章主要介绍了如何在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,请注明来意。