简体   繁体   English

使用递归打印数字序列 - javascript

[英]Print a sequence of numbers using recursion - javascript

I have this function which prints the numbers from 1 to n in a triangle like way.我有这个 function,它以类似三角形的方式打印从1n的数字。

 function printNumbers(n) { var result = ""; var counter = 1; while (counter <= n) { result += counter; console.log(result); counter = counter + 1; } } console.log(printNumbers(4));

the result looks like this:结果如下所示:

1
12
123
1234

I need pointer on how to do this using recursion, because I am new to programing an I don't have a clue on how to do it.我需要关于如何使用递归执行此操作的指针,因为我是编程新手,我不知道如何执行此操作。

The basic idea is just to use the last result to build the new result:基本思想只是使用最后一个结果来构建新结果:

function printNumbers(n){
    var result;
    if(n <= 1)
        result = '1';
    else
        result = printNumbers(n-1) + n;
    console.log(result);
    return result;
}

You can assign to a variable like that nicely using the ternary operator too:您也可以使用三元运算符很好地分配给这样的变量:

function printNumbers(n){
    var result = n <= 1 ? '1' : printNumbers(n-1) + n;
    console.log(result);
    return result;
}
    function printNumbers(n, counter, result){
        counter = counter || 0;
        result = result || "";
        if (counter >= n) return result;
        return printNumbers(n, ++counter, result+""+counter);
    }
    alert(printNumbers(10));
Function doCounter(counter, I, n)         
{
    If(I>n) {
        Console.log(counter);
        doCount(counter+I, I++, n);
    }
}

doCounter(1,0,4); doCounter(1,0,4);

You can try something like this:你可以尝试这样的事情:

function Recursion(n) {
  if (n <= 9) // to prevent infinite loop
  {
    var s = '';
    for (var i = 1; i < n; i++)
    {
      s += i; // concatenate until n
    }
    console.log(s); // print the generated number
    return Recursion(n + 1); // increase n and recall Recursion
  }
};

Recursion(1);

http://jsbin.com/eDOqOCi/1/edit?html,js,output http://jsbin.com/eDOqOCi/1/edit?html,js,output

function oneToN(n) {
  if (n == 0) {
    console.log(n);
    return n;
  } else {
    oneToN(--n);
    console.log(n + 1);
  }
}
oneToN(5);

here is the Javascript version:这是 Javascript 版本:

function printNumbers(n){
    if(n >= 10) {
        printNumbers(Math.floor(n / 10));
    }

    console.log(n);
}

printNumbers(1234);

// 1
// 12
// 123
// 1234

maybe sb is interested in the following version:也许某人对以下版本感兴趣:

function printNumbers(n){
    if(n >= 10) {
        printNumbers(Math.floor(n / 10));
    }
    console.log(n % 10);
}
printNumbers(1234);
// 1
// 2
// 3
// 4

 function countDown(number) { const newNumber = number - 1; if (newNumber >= 0) { countDown(newNumber); console.log(number); } } countDown(10);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM