再帰を使用して文字列を反転しようとしていますが、特別な工夫として、指定されたインデックスから開始して、インデックスに含まれる文字を返し、そのインデックスの後の残りの文字列を反転して、2つを1つの出力に結合する必要があります。私はこれを実行しようとしましたが、配列の範囲外の例外が発生することがあり、このhellooooのテストがllooooooとして出力されるなど、本来あるべき文字よりも多くの文字が表示されることがあります。2番目のパラメーターの必要性がわかったときに本当に迷子になったので、このコードを微調整するための助けをいただければ幸いです。
public class ReverseTest
{
public static void main(String[] argv)
{
System.out.println(reverse("a", 0));
System.out.println(reverse("hi", 0));
System.out.println(reverse("helloooo", 2));
}
public final static String reverse(String s, int ind)
{
int length = s.length(); //get string length
if (length <= 1) //if length is 1 or lower just repeat the string nothing to do
return s; //return string
else //if we have something to work with...
return s.substring(ind) + reverse(s.substring(ind + 1, length - 1), ind); //return substring of necessary index + reverse the rest and display in one string
}
}