1: 99 乗算九九の通常の実装はプログラマでも実行できます。 実装は次のとおりです。
package test.ms;public class Test99 { public static void main(String[] args) { for(int i=1; i<=9;i++){ for(int j=1; j<=i; j++){ System.out.print(j+" * "+i+ " = "+(i*j) +" "); }
2: 再帰を使用して 99 の九九を実装する
コードは次のとおりです。
package test.ms;public class MultiTable { public static void main(String args[]) { m(9) } /** * 九九を出力します* @param i */ public static void m(int i) { if (i == 1) { System.out.println("1*1=1 "); } else { m(i - 1) for (int j = 1; j <= i; j++) System.out.print(j + "*" + i + "=" + j * i + " ");
アイコンを再帰的に呼び出します。
各メソッド呼び出しはスタック フレームを生成し、それをメソッド スタックにプッシュします。再帰呼び出しが行われると、メソッド スタック内のスタック フレームは上の図のようになります。
次の図に示すように、メソッド内のスタック フレームの参照関係を削除する方がより直感的です。
対応するメソッド呼び出しの最終的な実行は、上の図に示すように単純化されています。i は変化しており、j は毎回 1 から始まり、i に等しくなるまで増加することに注意してください。
このようにして、上の図がスタックから取り出された後、99 個の乗算表が取得されます。
要約:
ネストされた for ループと再帰実装の比較:
スタックは主にスタック フレームを保存するために使用されます。そのため、再帰を使用すると、より多くのスタック フレームが生成され、大量のメモリが消費されます。 for ループが実行されます。スタック フレームを 1 回プッシュするメソッドがあり、スタック フレームは 1 つだけ存在するため、メモリを節約できます。
ようこそ、親指を立ててください。意識を失うまで。