15,616,138 members
0.00/5 (No votes)
See more:
Test Cases:

addToTwelve([1, 3, 4, 7, 5]); // true
addToTwelve([1, 3, 4, 7, 6]); // false
addToTwelve([1, 11, 4, 7, 6]); // true
addToTwelve([1, 12, 4, 7, 6]); // false
addToTwelve([1]); // false

I feel like this is more of a callback than recursion since I am iteratively going through the array and then recalling the function. But, I'm recalling the function on itself until a basecase is met,yet I'm using a for loop which is iterative..

I think, recursively, what I need to do is return the array and shift first element and then recheck if the first + second = 12 and if true return true. Base case being array.length < 1.

What I have tried:

```function addToTwelve(array) {

if (array.length < 1) {
return false;
} else {
for (let i = 0; i < array.length; i++) {
if (array[i] + array[i+1] === 12) {
return true;
} else {
array.shift()
console.log(array)
return addToTwelve(array);
}
}
}
}```

I refactored it without the for loop but recursion is really busting my brain here.

```function addToTwelve(array) {

if (array.length < 1) {
return false;
} else if (array[0]+array[1] === 12) {
return true;
} else {
array.shift();
return addToTwelve(array)

}
};```

Is that considered recursion now? XD Can you show me perhaps a better way to complete this?
Posted
Updated 10-Oct-22 19:33pm
v2

## Solution 1

Technically, it's recursion - because the function does call itself.
But ... it's a poor example in both cases.

The first example runs off the end of the array:
```for (let i = 0; i < array.length; i++) {
if (array[i] + array[i+1] === 12) {
```
If you have three elements, teh valid indices are 0, 1, and 2 - but your loop would add:
```array[0] + array[1]
array[1] + array[2]
array[2] + array[3]```
If it ever got to a second iteration. Which it won't because there is a return on both sides of the `if`.
So the loop is redundant: it does nothing.

The second version is technically recursion, but in practice it's just a loop that wastes stack space and which will crash with big arrays as a result!

Why would you want to make this a recursive function? It's not a recursive problem, it's iterative!

Comments
Chris Aug2022 11-Oct-22 1:41am
Thanks Griff, it's part of App Academy Open Course, 1 of 18 recursive problems. I can solve it easily with iteration but using recursion, I think they just want us to have a good handle on it.

The next question is exponents(pos and neg) and then advanced exponents "you will be squaring the results of the base number raised to the power of half of n power." and then fibonacci(#9) and then 9 more problems after that. They get progressively harder.
OriginalGriff 11-Oct-22 5:52am
Pass the array index instead of removing values - then it looks like the recursive version of factorial.
Chris Aug2022 11-Oct-22 8:55am
const addToTwelve = array => {
if (array.length < 2) return false;
if (array[0] + array[1] === 12) return true;
return addToTwelve(array.slice(1))
} -----> Bed time
Chris Aug2022 11-Oct-22 5:43am
What would be the ideal recursive way? Even though, ideally, this would be done iteratively.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Top Experts
Last 24hrsThis month
 OriginalGriff 148 Richard Deeming 75 Richard MacCutchan 35 Patrice T 10 Graeme_Grant 10
 OriginalGriff 3,204 Richard MacCutchan 1,416 Graeme_Grant 975 Dave Kreskowiak 689 CHill60 385

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900