2016-05-26 5 views
-2

次のように、再帰を使用してStringをリバースしようとしていました。 しかし私がreverse(arr,start++,end--)を呼び出すとき、それはstackoverflowエラーを与えています。
私はreverse(arr,start+1,end-1)を使ってみましたが、うまくいきました。fun(agr ++)vs fun(arg + 1)in java

public class Reverse { 
    public static void main(String[] args) { 
     char inp[] = "TestString".toCharArray(); 
     int n = inp.length; 
     reverse(inp, 0,n-1); 
     System.out.println(String.valueOf(inp)); 


    } 
    public static void reverse(char[] arr, int start, int end){ 
     if(start>=end) 
      return ; 
     char tmp; 
     tmp = arr[start]; 
     arr[start] = arr[end]; 
     arr[end] = tmp; 
     reverse(arr,start+1,end-1);//error line 

    } 

reverse(arr、start ++、end--)の問題は何ですか? 私はなぜ、start ++とend - の値がfunctionに渡されないのか知りたいです。

+0

stackoverflowのエラーが発生します。 –

答えて

1

はこれを見て持っているので、あなたがこれを行うときにインクリメント/デクリメントされた値は、再帰的なメソッドに渡されることはありません

reverse(arr,start++,end--)ポスト

SO post-increment-and-pre-increment-concept

に疑問を、あなたが持つメソッドを呼び出していることSOエラーの開始と終了の元の値

pre

reverse(arr,start+1,end-1)またはreverse(arr,++start,--end)を実行すると、開始および終了の増分および減分値が再帰メソッドに渡されます。

変数パネルで、開始と終了の値を確認し、逆の方法でコンソールにIDEの書き込み開始と終了の値を使用していない場合のEclipse IDEでデバッグ中再帰が終了することはありませんので、

関連する問題