Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Сделать елку из звездочек (https://javascript.ru/forum/css-html/73492-sdelat-elku-iz-zvezdochek.html)

Lvbnhbq 19.04.2018 19:43

Сделать елку из звездочек
 
*
*
***
*
***
*****
*
***
*****
*******
и т.д. чтобы можно самому было с клавы вводить количество таких ярусов ток они у меня здесь сдвинулись к левому боку

рони 19.04.2018 21:24

Lvbnhbq,
:cray:
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  *{
      text-align: center;
  }
  </style>
</head>
<body>
 <script>
function fn(a) {
  0 < a && fn(a - 1);
  for (var b = 0; a; b++) {
    b % 2 && (--a, document.write("*".repeat(b) + "<br>"));
  }
}
fn(5)
</script>

</body>
</html>

Lvbnhbq 19.04.2018 22:38

Цитата:

Сообщение от рони (Сообщение 483664)
Lvbnhbq,
:cray:
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  *{
      text-align: center;
  }
  </style>
</head>
<body>
 <script>
function fn(a) {
  0 < a && fn(a - 1);
  for (var b = 0; a; b++) {
    b % 2 && (--a, document.write("*".repeat(b) + "<br>"));
  }
}
fn(5)
</script>

</body>
</html>

рони,
можете объяснить алгоритм работы

рони 19.04.2018 23:33

Lvbnhbq,

function fn(a) {
  0 < a && fn(a - 1); // пока а больше нуля запускать функцию fn,
  for (var b = 0; a; b++) { //далее пока a больше нуля, в цикле увеличивать b,
    b % 2 && (--a, document.write("*".repeat(b) + "<br>"));  //если b нечётное,уменьшать a и выводить "*" в количестое b
  }
}

j0hnik 19.04.2018 23:35

рони,
Чётенькая елочка :)

рони 19.04.2018 23:41

Lvbnhbq,
... может так проще будет
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  *{
      text-align: center;
  }
  </style>
</head>
<body>
 <script>
function fn(a) {
    for (var k = 0; k <= a; k++) {
        for (var b = 0, j = k; j; b++) {
            if (b % 2) {
                --j;
                document.write("*".repeat(b) + "<br>")
            };
        }
    }
}
fn(5)
</script>

</body>
</html>

рони 19.04.2018 23:48

j0hnik,
:)

наверняка на форуме есть эта "ёлочка", только вместо repeat, там будет как-то так
document.write(Array(b+1).join("*") + "<br>")

j0hnik 19.04.2018 23:50

рони,
под новый год я красивые елки видел в какой то темке.

рони 20.04.2018 03:09

:) if лишний
<!DOCTYPE html>

<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    *{
            text-align: center;
    }
    </style>
</head>
<body>
 <script>
function fn(a) {
    0 < a && fn(a - 1);
    for (var b = 1; a; b += 2) {
        --a; document.write("*".repeat(b) + "<br>");
    }
}
fn(5)
</script>

</body>
</html>


Часовой пояс GMT +3, время: 08:17.