Javascript 使用JS循环形成倒ascii三角形艺术

Javascript 使用JS循环形成倒ascii三角形艺术,javascript,function,loops,ascii,Javascript,Function,Loops,Ascii,如果没有嵌套循环,您如何能够形成这样的ascii艺术 #### ### ## # 这就是我目前拥有的: function invertTriangle (row) { var asteric = "*" * row; for ( var y=row; y>=row; y--){ asteric = asteric - "*"; console.log(asteric); } }; invertTriangle(10); 我将感谢你的帮助和解释 谢谢

如果没有嵌套循环,您如何能够形成这样的ascii艺术

####
###
##
#
这就是我目前拥有的:

function invertTriangle (row) {
  var asteric = "*" * row;
  for ( var y=row; y>=row; y--){
      asteric = asteric - "*";
      console.log(asteric);
  }
};

invertTriangle(10);
我将感谢你的帮助和解释

谢谢大家!

试试看:

var string=”“;
对于(变量i=0,j=4,k=4;i<10;i++){
字符串+=“*”;
如果(--j==0){
j=--k;
字符串+=“\n”;
}
}

警报(字符串)这里有一种使用递归的方法

基本上,您可以使用希望打印在第一行的字符数调用函数。然后它构造一个包含这么多字符的字符串。然后,它减少所需的字符数,如果该数字大于0,则再次调用自身并将新结果添加到当前结果中。这将一直持续到需要零个字符的行。此时,函数不再调用自身,完全构造的字符串将返回给原始调用方

代码:


“严格使用”;
函数byId(e){returndocument.getElementById(e);}
window.addEventListener('load',onDocLoaded,false);
函数onDocLoaded()
{
byId('triTgt')。innerText=makeTriString(40);
}
函数makeTriString(nStars)
{
var-str='';
对于(变量i=0;i 0)
str+=makeTriString(nStars);
返回str;
}

使用递归。与创建递归函数来计算
n的方法相同(阶乘),你可以做一个来解决这个问题。我认为OP的意思是如何在一个循环中完成它。递归仍然可以嵌套。@AaditMShah-是的,递归确实可以嵌套-事实上,没有嵌套它就不会是递归,是吗?:惑儒:但是这个问题需要一个不涉及嵌套循环的解决方案。递归符合规定的要求。你能给我解释一下为什么使用j和k变量吗?我对JS运算符的逻辑以及JS函数的工作方式非常不熟悉。几天前才开始学习!
<!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>