首页 > 技术文章 > java算法之递归算法(打印99乘法表)

javakfz 2020-06-17 18:35 原文

递归其实在程序当中我们可以理解为自己调用自己,使用递归做相关计算都是具有一定规律的逻辑,下一步计算都需要用到前一步或几步计算结果,比如说我们在做连加、连乘及阶乘、遍历文件夹等,递归还必须要满足两个条件:

  1. 在每一次调用自己时,必须是要接近于结果。
  2. 必须在有限次计算中有一个终止的处理。

如不遵循以上条件往往会让递归进入死循环,从而只有递没有归。
下面我们就在Java中使用递归打印出99乘法表。

递归图解
在这里插入图片描述
嵌套for循环实现99乘法表

for (int i = 1; i<= 9; i++) {
    for (int j = 1; j<= i; j++) {
        System.out.print(j + "*" + i + "=" + (i*j));
        System.out.print("   ");
    }
    System.out.println();
}

递归打印99乘法表代码实现

public static void main(String[] args) {
	print(9);
}
private static void print(int j) {
    if (j > 0) {
        print(j - 1);
        for (int i = 1; i <= j; i++) {
            System.out.print(i + "*" + j + "=" + (i*j));
            System.out.print("   ");
        }
        System.out.println();
    }
}

在这里插入图片描述
如上我们可以看出来完全满足前面说到的两个条件,我们可以看下for循环其实最终出来的结果就是一个回归的时候才执行的,看打印出来的结果我们可以看出是从最后一次调用print方法执行for循环打印的结果,在一层一层传递参数中我们没有打印任何东西,直到参数从开始的9减少到0的时候最后一次方法调用结束,然后从后往前依次回归执行for循环打印乘法口诀,最终呈现出乘法口诀表。

扫二维码关注博主微信公众号

推荐阅读