Замена для lool с функцией рекурсии - PullRequest
0 голосов
/ 30 января 2020

Может ли кто-нибудь заменить l oop функцией рекурсии? Эта функция должна печатать четные числа при вводе начального и конечного диапазона.

<html>
  <head>
    <title>JavaScript to print Even Numbers within a Range!</title>
    <script>
      function printEvenNums(){
        //get the start and end range from user
        var start = document.getElementById("start").value;
        var end = document.getElementById("end").value;
        var evenNums = "<br>Even Numbers:<br>";

        for(i=start; i<=end; i++){
          // let's divide the value by 2
          // if the reminder is zero then it's an Even number
          if(i % 2 == 0){
            evenNums += i + "<br>";
          }
        }
        //print the values
        document.getElementById("result").innerHTML = evenNums;
      }
    </script>
  </head>
  <body>
    <h3>JavaScript to print Even Numbers within a Range!</h3>
    Start: <input type="number" min="0" id="start" value="1" />
    End: <input type="number" id="end" min="1" value="20" />
    <input type="button" onclick="printEvenNums()" value="Print Even Numbers" />
    <div id="result"></div>
  </body>
</html>

Ответы [ 2 ]

0 голосов
/ 01 февраля 2020

Ты, но я также не знаю, как реализовать эту функцию в DOM. Я хочу работать в браузере, когда я набираю начальные и конечные числа ввода и когда нажимаю кнопку.

0 голосов
/ 30 января 2020

Если вы хотите заменить for l oop рекурсивной функцией, один из способов go - использовать индекс в качестве параметра функции. В вашем случае это будет:

function recPrintEvenNumbers(start, end) {
  if(start>end) //start went over end which means your for loop would have ended
    return "";

  if(start%2==0) //even number
    return start + "<br>" + recPrintEvenNumbers(start+1, end);
  else return recPrintEvenNumbers(start+1, end);
}

evenNumbers = "even numbers: <br>" + recPrintEvenNumbers(1,9);
console.log(evenNumbers); //even numbers: <br>2<br>4<br>6<br>8<br>
...