下面是递归实现的代码描述:
package test.m;
public class test99 {
public static void main(String[] args){
m(9);
}
/*
* 打印99乘法表
* */
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("");
}
}
}
每一个方法的调用都会产生一个栈帧,压入到方法栈,当递归调用的时候,原理类似于穿衣服和脱衣服,在递归调用时,把每层函数脱掉,最早执行的方法是最内层的方法,从内向外
栈 主要是用来存放栈帧的,每执行一个方法就会出现压栈操作,所以采用递归的时候产生的栈帧比较多,递归就会影响到内存,非常消耗内存,而使用for循环就执行了一个方法,压入栈帧一次,只存在一个栈帧,所以比较节省内存