[問題] JS loop問題
各位版上的前輩先進們好,小弟目前正在學習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***,是不是我的思
路哪邊有問題?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.118.151 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1646370647.A.664.html
→
03/04 13:51,
2年前
, 1F
03/04 13:51, 1F
→
03/04 16:35,
2年前
, 2F
03/04 16:35, 2F
→
03/04 16:35,
2年前
, 3F
03/04 16:35, 3F
→
03/04 17:55,
2年前
, 4F
03/04 17:55, 4F
→
03/04 17:56,
2年前
, 5F
03/04 17:56, 5F
→
03/04 17:57,
2年前
, 6F
03/04 17:57, 6F
→
03/04 17:57,
2年前
, 7F
03/04 17:57, 7F
→
03/04 17:58,
2年前
, 8F
03/04 17:58, 8F
→
03/04 17:59,
2年前
, 9F
03/04 17:59, 9F
→
03/04 18:31,
2年前
, 10F
03/04 18:31, 10F
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章