1: La implementación ordinaria de la tabla de multiplicar 99 es demasiado simple, incluso un programador puede hacerlo. La implementación es la siguiente:
paquete test.ms;clase pública 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) +" "); System.out.println();
2: Utilice la recursividad para implementar la tabla de multiplicar del 99.
El código es el siguiente:
paquete test.ms;public class MultiTable { public static void main(String args[]) { m(9 } /** * Imprime la tabla de multiplicar* @param i */ public static void m(int i) { if (i == 1) { System.out.println("1*1=1 "); else { m(i - 1); para (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + "=" + j * i + " " } System.out.println();
Llame al icono de forma recursiva:
Cada llamada a un método generará un marco de pila y lo insertará en la pila de métodos. Cuando se realiza una llamada recursiva, el marco de pila en la pila de métodos se verá similar a la imagen de arriba.
Es más intuitivo eliminar la relación de referencia del marco de pila en el método: como se muestra en la siguiente figura:
La ejecución final de la llamada al método correspondiente se simplifica como se muestra en la figura anterior. Tenga en cuenta que i ha estado cambiando y j comienza desde 1 cada vez y luego aumenta hasta que es igual a i.
De esta manera, después de sacar la imagen de arriba de la pila, se obtienen 99 tablas de multiplicar:
Resumir:
Comparación de bucles for anidados e implementación de recursividad:
La pila se utiliza principalmente para almacenar marcos de pila. Cada vez que se ejecuta un método, se producirá una operación de inserción. Por lo tanto, se generarán más marcos de pila cuando se utilice la recursión, lo que afectará la memoria y consumirá mucha memoria. Se ejecutará un bucle for. Hay un método que empuja el marco de la pila una vez, y solo existe un marco de la pila, por lo que ahorra memoria.
Bienvenido a darme el visto bueno. Hasta que quedó inconsciente.