javascript - 在 JavaScript 中打印给定长度的菱形的代码

标签 javascript iteration

所以我目前正在学习 JavaScript,并且我对在编程中完成某件事的许多不同方法感兴趣。这是我的钻石代码,它将适用于给定的奇数:

const l = 11;
let space = ' '; 
let star = '*';
let i = 1;
let k;
let n = 0;

while(i <= l) {
  k = (l - i)/2;
  console.log(space.repeat(k) + star.repeat(i));
  i = i + 2;
}

// i = i - 2;

while(i >= 2) {
  i = i - 2;
  k = (l - i)/2;
  if(i < l) {                       // To get rid of repeating middle line
    console.log(space.repeat(k) + star.repeat(i));
  } else { 
    continue; 
    }
}

还有其他更直观的方法吗?

最佳答案

您可以采用递归方法并调用该函数,直到获得最长的星线。

function diamond(l, i = 1) {
    const
        STAR = '*',
        SPACE = ' ',
        LINE = SPACE.repeat((l - i) / 2) + STAR.repeat(i);

    console.log(LINE);
    if (i >= l) return;
    diamond(l, i + 2);
    console.log(LINE);
}

diamond(11);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 在 JavaScript 中打印给定长度的菱形的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330108/

相关文章:

javascript - 仅使用 javascript 自动双击

javascript - 如何从 Jquery 中的 Json 响应中提取元素

javascript - 如何在javascript中迭代字符串数组并将元素连接在一起?

c - 双链表 - 无法编写为节点提供正确索引号的迭代器

c++ - 有没有一种方法可以在不使用递归的情况下迭代 n 维数组(其中 n 是变量)?

python - Python 中有一个迭代字典

javascript - 如何避免 ` PromiseRejectionHandledWarning: Promise rejection was handled asynchronously`?

javascript - jQuery 选择器与每个选择器

javascript - 通过将嵌套属性提升到一个级别来转换 javascript 对象

带删除的 C++ 映射迭代