如何解决如何修剪三角形内的空间
由于某种原因,我只是无法让 .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时,硬编码数字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(" ");
}
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";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。