我的代码下面有什么问题?无法发现我的任何问题。 https://jsfiddle.net/rz8y6vc7/
function pyramid(n, row, level = '') {
if (row === n) {
return;
}
if (level.length === 2 * n - 1) {
return pyramid(n, row + 1);
}
const midpoint = Math.floor((2 * n - 1) / 2);
let add;
if (midpoint - row <= level.length && midpoint + row => level.length) {
add = '#';
} else {
add = ' ';
}
pyramid(n, row, level + add);
}
pyramid(4)
此行有错误。if (midpoint - row <= level.length && midpoint + row => level.length) {
答案 0 :(得分:0)
=>
不是JavaScript中的运算符。
您可能会想到<=
,它是小于或等于运营商。
您可以在此处详细了解此特定运算符:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Less_than__or_equal_operator
答案 1 :(得分:0)
您的代码存在以下问题:
您没有将输出打印到浏览器中,我使用document.write()
来显示输出。
HTML中不保留空格,您可以将文本插入保留空格的pre
标记中。
您收到max stack exceeded error
因为您没有初始化变量row
。您可以像初始化level
变量一样初始化此变量!
请参阅以下代码段,如果您遇到任何问题,请告诉我们!
function pyramid(n, row = 0, level = '') {
if (row === n) {
return;
}
if (level.length === 2 * n - 1) {
document.getElementById("test").innerHTML += "\n";
return pyramid(n, row + 1);
}
const midpoint = Math.floor((2 * n - 1) / 2);
let add;
if (midpoint - row <= level.length && midpoint + row >= level.length) {
add = '#';
} else {
add = ' ';
}
document.getElementById("test").innerHTML += add;
pyramid(n, row, level + add);
}
pyramid(4)
<pre id="test"></pre>