2016-04-06 10 views
0

私は、この質問Java recursion and integer double digitで説明した再帰パラメータの計算方法を理解するのに問題があります。二桁再帰の説明

public static int doubleDigits(int i){ 

     if (i == 0){ 
      return 0; 
     }else{ 
      return doubleDigits(i/10) * 100 + (i % 10) * 10 + i % 10; 
     } 


} 

結果であればI = 1234 INT:実装コードは次のようになります

11223344 

私は何が起こっ、コードをデバッグしようとしましたが、難しさを理解しました。

私は多くの例を確認しましたが、このケースでは再帰がどのように機能するのか理解できます。

この場合、再帰がどのように機能するかをわかりやすく説明したいと思います。

+0

「doubleDigits」は、ブレーク条件を満たすまで再帰的に呼び出されます。 –

+4

鉛筆と紙を使って、「i = 12」を設定して物を描き始めます。このメソッドは、100%の時間で再帰を理解するのに役立ちます。 – Maroun

+1

私は鉛筆と紙で試してみましょう、良いアイデアのように聞こえる。 – codeme

答えて

3

再帰は、常に小さな問題を解いてから、その解を追加する(または小さな解を組み合わせる)ことによって動作します。

は、最後の数字を除くすべての数字の数字を2桁にした数字の数字を2倍します。

次に、残りの2桁の余裕を確保するために100を掛けて、(i % 10) * 10 + i % 10を追加します。 i % 10は入力番号の最​​後の桁であり、出力番号に2回追加されます。

doubleDigits(1234/10) * 100 + (i % 10) * 10 + i % 10 

112233     * 100 +  4 * 10 +  4   = 11223344 
+0

いい説明、ありがとう。 – codeme