各位版上的前辈先进们好,小弟目前正在学习JS,做题的时候发现有一题让我百思不解, 想请问各位大大们:
关于此题我一直搞不懂,
function makeStars(n){
let result = "*";
for (let i = 2; i <= n ; i++) {
let s = "\n";
for (let j = 0; j < i ; j++) {
s = s + "*";
}
result = result + s;
}
console.log(result);
}
makeStars(3);
————————————————————
第九行的 result += s 被包在第一个for loop里面,为什么不会被重复?
正确答案是*\n**\n*** (第一个*是let result="*"造成)
但我不了解为什么答案不是*\n***\n***呢? (第一个*、第四个* 是let result="*"造成)
我的思路是: 当n=3时,第一个for loop会被执行两次(“i=2”与“i=3”时)、第二个for loop会被执行共五次(“i=2”时执行2次 + “i=3”时执行3次);
也就是说,当n=3的前提下,i=2时触发两次第二个for loop (结果为\n**)、触发一次“r esult += s”,得到“*\n**”;接着在i=3时触发三次第二个for loop (结果为\n***)、 又触发一次“result += s”,得到“*\n***”;
而"*\n**"+"*\n***" = "*\n***\n***" ;但是正确答案却是*\n**\n***,是不是我的思
路哪边有问题?