为什么会出现栈溢出呀?想不明白

function repeatStringNumTimes(string,times){
            if(times<=0){
                return "";
            }
            if(times===1){
                return string;
            }
            else
                return string+repeatStringNumTimes(string,times--);
        }

alert(repeatStringNumTimes("abc",3));

clipboard.png

阅读 4.7k
6 个回答

clipboard.png

var times = 3;
function test(times){}

test(times--)//test(3)

test(--times)//test(2)

楼主,你这是一直在循环,当然要出现溢出了

每次传入的都是 使用之后减一,每次都是3,当然溢出,除非times 在function外

window.times = 3
function repeatStringNumTimes(string){

  if(times<=0){
    return "";
  }
  if(times===1){
    return string;
  }
  else
    return string+repeatStringNumTimes(string,times--);
}
console.log(repeatStringNumTimes("abc",times));
新手上路,请多包涵
function repeatStringNumTimes(string,times){
            if(times<=0){
                return "";
            }
            if(times===1){
                return string;
            }
            else
                return string+repeatStringNumTimes(string,--times);
        }

alert(repeatStringNumTimes("abc",3));

其实不需要把times放在外面,不知道是不是你想要的效果,把 times 的前置运算改成后置运算就好了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题