Ryan Barnaby
Ryan Barnaby

Reputation: 169

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 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.

Upvotes: 0

Views: 6443

Answers (7)

sagar kumar
sagar kumar

Reputation: 11

function countDown(number) {

  const newNumber = number - 1;

  if (newNumber >= 0) {
    countDown(newNumber);
    console.log(number);
  }
}

countDown(10);

Upvotes: 0

TorvaldsDB
TorvaldsDB

Reputation: 982

here is the Javascript version:

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

Upvotes: 0

Amarkant Kumar
Amarkant Kumar

Reputation: 117

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

Upvotes: 0

Paul Rad
Paul Rad

Reputation: 4882

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

Upvotes: 0

ug_
ug_

Reputation: 11440

Function doCounter(counter, I, n)         
{
    If(I>n) {
        Console.log(counter);
        doCount(counter+I, I++, n);
    }
}

doCounter(1,0,4);

Upvotes: 0

DarkBee
DarkBee

Reputation: 15621

    function printNumbers(n, counter, result){
        counter = counter || 0;
        result = result || "";
        if (counter >= n) return result;
        return printNumbers(n, ++counter, result+""+counter);
    }
    alert(printNumbers(10));

Upvotes: 0

Paul
Paul

Reputation: 141827

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;
}

Upvotes: 3

Related Questions