如果没有嵌套循环,你怎么能形成这样的ascii艺术?
####
###
##
#
这就是我目前所拥有的:
function invertTriangle (row) {
var asteric = "*" * row;
for ( var y=row; y>=row; y--){
asteric = asteric - "*";
console.log(asteric);
}
};
invertTriangle(10);
感谢您的帮助和解释!
谢谢!
答案 0 :(得分:0)
尝试:
var string = "";
for (var i = 0, j = 4, k = 4; i < 10; i++) {
string += "*";
if (--j === 0) {
j = --k;
string += "\n";
}
}
alert(string);
希望有所帮助。
答案 1 :(得分:0)
这是一种通过递归来实现它的方法。
基本上,您可以使用您想要在第一行打印的字符数来调用该函数。然后它构造一个包含这么多字符的字符串。然后它减少所需的字符数,如果该数字大于0,则再次调用自身并将新结果添加到当前结果中。这一直持续到我们到达需要零字符的行。此时,该函数不再调用自身,并且完全构造的字符串将返回给原始调用者。
代码:
<!DOCTYPE html>
<html>
<head>
<script>
"use strict";
function byId(e){return document.getElementById(e);}
window.addEventListener('load', onDocLoaded, false);
function onDocLoaded()
{
byId('triTgt').innerText = makeTriString(40);
}
function makeTriString(nStars)
{
var str = '';
for (var i=0; i<nStars; i++)
str += "*";
str += "\n";
nStars--;
if (nStars > 0)
str += makeTriString(nStars);
return str;
}
</script>
<style>
</style>
</head>
<body>
<div id='triTgt'></div>
</body>
</html>