2016-10-17 13 views
-2

私は解決策としてWhats the best way to recursively reverse a string in Java?を参照しましたが、私の解決策と私が理解していない正しい解決策との間には微妙な違いがあります。Javaの文字列を再帰的に逆転

私は、コマンドラインで与えられたargsで文字列を反転しようとしています。これは私の再帰的な文字列を反転する方法です(ほとんど同じです)。しかし、私はStackOverflowExceptionを実行しています。なぜそれがあったのだろうか?それは私の方法が静的な方法で、その間はないからですか?

public static String reverse(String word) { 
    if (word.length() == 1) { 
     return word; 
    } else { 
     return reverse(word.substring(1) + word.charAt(0)); 
    } 
} 
+0

括弧の中の単語.charAt(0)を取ります。 – matt

答えて

3

逆を呼び出すたびに、文字列の長さは変更されません。あなたがあなたのreturn文を変更した場合:

return reverse(word.substring(1)) + word.charAt(0); 

あなたが逆を呼び出すたびに、単語の長さは1つの文字短くなります。

+0

ああ!私は今それを見る。ありがとうございました!私はそれを逃したと信じることができない:) –

0
public String reverseString(String str) { 

     if (str.length() == 1) { 
      return str; 
     } else { 
      reverse += str.charAt(str.length() - 1) 
        + reverseString(str.substring(0, str.length() - 1)); 
      return reverse; 
     } 
    } 
関連する問題