递归其实在程序当中我们可以理解为自己调用自己,使用递归做相关计算都是具有一定规律的逻辑,下一步计算都需要用到前一步或几步计算结果,比如说我们在做连加、连乘及阶乘、遍历文件夹等,递归还必须要满足两个条件:
- 在每一次调用自己时,必须是要接近于结果。
- 必须在有限次计算中有一个终止的处理。
如不遵循以上条件往往会让递归进入死循环,从而只有递没有归。
下面我们就在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循环打印乘法口诀,最终呈现出乘法口诀表。
扫二维码关注博主微信公众号