一些…打印九九乘法表的算法

普通的/双层for循环

1
2
3
4
5
6
7
int row = 9;
for (int i = 1; i <= row; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + j * i + " ");
}
System.out.println("\n");
}

只能使用一个循环

1
2
3
4
5
6
7
for(int i = 0; i < 45; i++)
{
int k = (int) ((Math.sqrt(8 * i + 1) + 1) / 2);
int j = i + 1 - (k - 1) * k / 2;
System.out.print(j + "*" + k + "=" + k * j);
System.out.print(k == j ? "\n\n" : " ");
}

只能使用一个循环而且不能使用if

那么需要用到递归了

1
2
3
4
5
6
7
8
9
10
11
12
public static boolean printMTable(int n) {
for (int i = 1; i <= n; i++) {
System.out.print(i + "*" + n + "=" + i * n + " ");
}
System.out.println("\n");

return n == 9 || printMTable(++n);
}

public static void main(String[] args) {
printMTable(1);
}


不能使用循环

那我还能怎么办呢

1
2
3
4
5
6
7
8
9
System.out.println("1*1=1" + "\n");
System.out.println("1*2=2 2*2=4" + "\n");
System.out.println("1*3=3 2*3=6 3*3=9" + "\n");
System.out.println("1*4=4 2*4=8 3*4=12 4*4=16" + "\n");
System.out.println("1*5=5 2*5=10 3*5=15 4*5=20 5*5=25" + "\n");
System.out.println("1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36" + "\n");
System.out.println("1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49" + "\n");
System.out.println("1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64" + "\n");
System.out.println("1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81" + "\n");

简单粗暴~


END…