如何用JavaScript打印列递增的指定数字图案?
解决数字图案按列递增输出的问题
你需要实现的是按列优先填充的数字图案,原代码是按行顺序递增数字,所以无法得到目标效果。以下是两种可行的解决方案:
方案一:通过公式直接计算每个位置的数字
观察图案规律,可以推导出每行第col个位置的数字计算公式,直接计算并输出:
const pattern = (n) => { for (let row = 0; row < n; row++) { let line = ''; for (let col = 0; col <= row; col++) { // 计算当前位置的数字 const num = row + 1 + col * (2 * n - col - 1) / 2; line += num + ' '; } // 移除末尾多余空格后输出 document.write(line.trim() + "<br/>"); } }; pattern(4);
方案二:构建二维数组按列填充后输出
先创建二维数组,按列顺序填充数字,再逐行输出数组内容,逻辑更直观:
const pattern = (n) => { // 初始化n行的空数组 const arr = Array.from({ length: n }, () => []); let count = 1; // 按列填充数字:第col列填充到row从col到n-1的位置 for (let col = 0; col < n; col++) { for (let row = col; row < n; row++) { arr[row][col] = count++; } } // 逐行输出拼接后的内容 arr.forEach(row => { document.write(row.join(' ') + "<br/>"); }); }; pattern(4);
两种方案运行后,都能输出你需要的图案:
1
2 5
3 6 8
4 7 9 10
内容的提问来源于stack exchange,提问作者Vipin Yadav
相关产品推荐
相关产品推荐

