1 : L'implémentation ordinaire de la table de multiplication 99 est trop simple, même un programmeur peut la faire. L'implémentation est la suivante :
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) +" " } System.out.println();
2 : Utiliser la récursivité pour implémenter la table de multiplication 99
Le code est le suivant :
package test.ms;public class MultiTable { public static void main(String args[]) { m(9 } /** * Imprimer la table de multiplication* @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();
Appelez l'icône de manière récursive :
Chaque appel de méthode générera un cadre de pile et le placera sur la pile de méthodes. Lorsqu'un appel récursif est effectué, le cadre de pile dans la pile de méthodes ressemblera à l'image ci-dessus.
Il est plus intuitif de supprimer la relation de référence du cadre de pile dans la méthode : comme le montre la figure suivante :
L'exécution finale de l'appel de méthode correspondant est simplifiée comme le montre la figure ci-dessus. Notez que i a changé et j commence à partir de 1 à chaque fois, puis incrémente jusqu'à ce qu'il soit égal à i.
De cette façon, une fois l'image ci-dessus sortie de la pile, 99 tables de multiplication sont obtenues :
Résumer:
Comparaison des boucles for imbriquées et de l'implémentation de la récursivité :
La pile est principalement utilisée pour stocker les cadres de pile. Chaque fois qu'une méthode est exécutée, une opération push se produit. Par conséquent, davantage de cadres de pile sont générés lorsque la récursivité est utilisée. une boucle for s'exécutera. Il existe une méthode qui pousse le cadre de pile une fois, et un seul cadre de pile existe, ce qui économise de la mémoire.
Bienvenue pour me donner un coup de pouce. Jusqu'à ce qu'il perde connaissance.