Advertisements

I am trying to wrap my head around recursive functions. I’ve tried a number of entry level exercises with no success. For example, I put this code into JS fiddle. I intended for it to take the sum of all numbers from 1 to n.

```
function sumAll(n) {
if (n == 1 ) {
return 1;
} else if (n > 1) {
return sumAll(n--) + n;
}
}
console.log(sumAll(3));
```

feeding 3 to the function should give me ‘6’. I get an error, though.

### >Solution :

The `--`

suffix operator will evaluate to the **original** value of `n`

, and the subtraction from `n`

will happen afterwards (which is also not desired as you still want to do `+ n`

). That means the recursive call gets the *same* value for `n`

as the caller, and so you don’t get closer to the end…

Don’t use `--`

here, but `-1`

:

```
function sumAll(n) {
if (n == 1 ) {
return 1;
}
else if (n > 1) {
return sumAll(n-1) + n;
}
}
console.log(sumAll(3));
```