function nine(num){
if(num==1){
console.log('1*1=1');
}else{
nine(num-1);
for(var i=1,str='';i<=num;i++){
str+= i + '*' + num + '=' + i*num + ' ';
}
console.log(str);
}
}
nine(9);
这个不是自增,而是你调用了nine(num-1),相当于是一个递归调用,然后调用了9次,每次num的值都不一样。如果不明白,就按照函数的执行流程走一遍就懂了——第一次,num=9,然后nine(8),接着nine(7).......知道nine(1),打印第一行,再向上执行for循环的函数,结果就出来了。
nine(9) 不等于1 所以走else,然后会先调用nine(8) 然后再执行输出nine(9)的字符串,nine(8) 也是同理会先执行nine(7)再执行输出
所以显示是反过来的 先显示nine(1) 中的字符串 然后 2 然后 3 ....一直到9
把调用写在循环后
function nine(num){
if(num==1){
console.log('1*1=1');
}else{
for(var i=1,str='';i<=num;i++){
str+= i + '*' + num + '=' + i*num + ' ';
}
nine(num-1);
console.log(str);
}
}
nine(9);
边