1: 99 구구단의 일반적인 구현은 너무 간단하여 프로그래머도 할 수 있습니다. 구현은 다음과 같습니다.
패키지 test.ms;public 클래스 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: 재귀를 사용하여 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 + " ") } System.out.println() } } }
아이콘을 재귀적으로 호출합니다.
각 메서드 호출은 스택 프레임을 생성하고 이를 메서드 스택에 푸시합니다. 재귀 호출이 이루어지면 메서드 스택의 스택 프레임은 위 그림과 유사하게 보입니다.
다음 그림과 같이 메서드에서 스택 프레임의 참조 관계를 제거하는 것이 더 직관적입니다.
해당 메소드 호출의 최종 실행은 위 그림과 같이 단순화되었습니다. i는 계속 변경되었으며 j는 매번 1부터 시작하여 i와 같아질 때까지 증가합니다.
이런 식으로 위의 그림이 스택에서 튀어나온 후 99개의 곱셈표가 얻어집니다.
요약:
중첩된 for 루프와 재귀 구현 비교:
스택은 주로 스택 프레임을 저장하는 데 사용되며, 메소드가 실행될 때마다 푸시 작업이 발생하므로 재귀를 사용하면 더 많은 스택 프레임이 생성됩니다. for 루프가 실행됩니다. 스택 프레임을 한 번 푸시하는 방법이 있는데, 스택 프레임이 하나만 존재하므로 메모리가 절약됩니다.
엄지손가락을 치켜세운 것을 환영합니다. 의식을 잃을 때까지.