# Why doesnt countdown(2) just return 2?

Tell us what’s happening:

I’ve completed the challenge just fine, I just don’t get how the recursion works (and yes, I’ve read some articles on it, which is why I’m asking)

So here’s how I understand it. If I run countdown(2) - it’ll go to the line

``````  const countArray = countdown(n - 1);
``````

So countArray will be set to what countdown(1) returns, which is just an empty array. We then move on to the line

``````  countArray.unshift(n);
``````

Which adds the number 2 to the array, and finally

``````return countArray;
``````

should just return [2]… and yet it doesn’t - it returns [2, 1]. Could someone explain what I’m missing?

``````  **Your code so far**
``````
``````// Only change code below this line
function countdown(n){
if(n < 1){
return [ ];
}else{
const countArray = countdown(n - 1);
countArray.unshift(n);
return countArray;
}
}

console.log(countdown(12))

// Only change code above this line

2
``````
``````  **Your browser information:**
``````

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.125 Safari/537.36`

Challenge: Use Recursion to Create a Countdown

Is it? Look closely at your code to see when it returns an empty array:

``````if(n < 1){
return [];
}
``````

P.S. To display your code in here you need to wrap it in triple back ticks. On a line by itself type three back ticks. Then on the first line below the three back ticks paste in your code. Then below your code on a new line type three more back ticks. The back tick on my keyboard is in the upper left just above the Tab key and below the Esc key.

1 Like