0

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.

1

7 Answers 7

3

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;
}
Sign up to request clarification or add additional context in comments.

Comments

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

Comments

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

doCounter(1,0,4);

Comments

0

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

Comments

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

1 Comment

This code does not produce the output that the answer is asking for. Please edit the answer to fix the code and add some explanation and point out what new aspect of the question it addresses, or remove it..
0

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

Comments

0

function countDown(number) {

  const newNumber = number - 1;

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

countDown(10);

1 Comment

This does not print the numbers in a triangle format as asked for in the question.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.