如何修剪三角形中的空间



由于某些原因,我无法使.trim为我工作。我想也许最好尝试将代码转换为字符串,然后再进行修剪,但似乎也无法正确使用toString。到目前为止,我得到的是:

function Pyramid(number) {
if(number>0) {
Pyramid(number-1);
for(let z=9;  z>=(number-1);  z--) {
document.write("  ");
};
for(let j=1; j<=number; j++) { //12345
document.write(" "+j);
};
for(let k=number-1; k>0; k--) { // 54321
document.write(" "+k);
};
}; 
document.write("<br>");
};
Pyramid(5);
document.body.style.fontFamily = "monospace";
function myFunction() {
var n = Pyramid(5).toString();
document.write(n);
};
myFunction();
document.write(myFunction.trim()); 

如果有人能把这件事搞砸的话,最好把它最长的线放在屏幕的左边,可能需要从左边修剪空格,但担心我会破坏金字塔的形状。

您打印初始空格集的第一个循环似乎是问题的根本原因。金字塔的大小可以是可变的,当大小小于9时,硬编码数字9将导致不需要的空间。

一个简单的方法是在打印空格时记住金字塔的大小。您可以通过使用一个简单的包装器函数来实现这一点,该函数将初始大小作为第二个参数提供给递归函数。

function Pyramid(number) {
buildPyramid(number, number);
}
function buildPyramid(currentVal, size) {
if (currentVal > 0) {
buildPyramid(currentVal - 1, size);
for (let z = size; z > currentVal; z--) {
document.write(" &nbsp;");
}
for (let j = 1; j <= currentVal; j++) {
document.write(" " + j);
}
for (let k = currentVal - 1; k > 0; k--) {
document.write(" " + k);
}
}
document.write("<br>");
}
Pyramid(5);
document.body.style.fontFamily = "monospace";

最新更新