1: Die gewöhnliche Implementierung der 99er Multiplikationstabelle ist zu einfach, selbst ein Programmierer kann sie wie folgt implementieren:
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: Verwenden Sie die Rekursion, um die 99-Multiplikationstabelle zu implementieren
Der Code lautet wie folgt:
package test.ms;public class MultiTable { public static void main(String args[]) { m(9); } /** * Einmaleins ausdrucken* @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 + " "); } System.out.println();
Rufen Sie das Symbol rekursiv auf:
Bei jedem Methodenaufruf wird ein Stapelrahmen generiert und auf den Methodenstapel verschoben. Bei einem rekursiven Aufruf sieht der Stapelrahmen im Methodenstapel ähnlich aus wie im Bild oben.
Es ist intuitiver, die Referenzbeziehung des Stapelrahmens in der Methode zu entfernen: wie in der folgenden Abbildung dargestellt:
Die endgültige Ausführung des entsprechenden Methodenaufrufs wird vereinfacht, wie in der Abbildung oben gezeigt. Beachten Sie, dass sich i geändert hat und j jedes Mal bei 1 beginnt und dann erhöht wird, bis es gleich i ist.
Auf diese Weise werden 99 Multiplikationstabellen erhalten, nachdem das obige Bild aus dem Stapel genommen wurde:
Zusammenfassen:
Vergleich verschachtelter For-Schleifen und Rekursionsimplementierung:
Der Stapel wird hauptsächlich zum Speichern von Stapelrahmen verwendet. Daher werden bei Verwendung der Rekursion mehr Stapelrahmen generiert Eine for-Schleife wird ausgeführt. Es gibt eine Methode, die den Stapelrahmen einmal verschiebt. Da nur ein Stapelrahmen vorhanden ist, wird Speicherplatz gespart.
Geben Sie mir gerne einen Daumen nach oben. Bis er bewusstlos wurde.