JS Interview Prep: Recursion
Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Recursion in Javascript
This post goes through code samples utilizing recursion. We will state the problems and then provide runnable code snippets that show the answer. The answers will be hidden you can try them on your own and then peek.
Special thanks to the Rithm School free computer science course and their exercises on github
Question 1: Sum all numbers
Write a function called sumRange
. It will take a number and return
the sum of all numbers from 1 up to the number passed in.
Sample: sumRange(3) returns 6, since 1 + 2 + 3 = 6.
Answer 1
The most important thing we need for recursive solutions is a base case. There needs to be a way of exiting the loop or the function will go on forever. The base case in the below code code is that when the input is 1, return 1. Eventually the function will return 6, the correct answerOnce you understand this code move on to the next problem
Question 2: Power function
Write a function called power
which takes in a base and an exponent. If
the exponent is 0, return 1.
Sample:
console.log(power(2, 4)); // 16
console.log(power(2, 3)); // 8
console.log(power(2, 2)); // 4
console.log(power(2, 1)); // 2
console.log(power(2, 0)); // 1
Answer 2
You can think of it in terms of this example:
2^4 = 2 * 2^3;
2^3 = 2 * 2^2;
2^2 = 2 * 2^1;
2^1 = 2 * 2^0; // once our exponent is 0 we KNOW that the value is always 1!
Question 3: Calculate factorial
Write a function that returns the factorial
of a number. As a quick refresher,
a factorial of a number is the result of that number multiplied by the number
before it, and the number before that number, and so on, until you reach 1.
The factorial of 1 is just 1.
Sample:
factorial(5); // 5 * 4 * 3 * 2 * 1 === 120
Answer 3
Question 4: Check all values in an array
Write a function called all
which accepts an array and a callback and returns
true if every value in the array returns true when passed as parameter to the
callback function
Sample:
var allAreLessThanSeven = all([1,2,9], function(num){
return num < 7;
});
console.log(allAreLessThanSeven); // false
Answer 4
Question 5: Product of an array
Write a function called productOfArray which takes in an array of numbers and returns the product of them all
Sample:
var six = productOfArray([1,2,3]) // 6
var sixty = productOfArray([1,2,3,10]) // 60
Answer 5
Question 6: Search JS object
Write a function called contains
that searches for a value in a nested object.
It returns true if the object contains that value.
Sample:
var nestedObject = {
data: {
info: {
stuff: {
thing: {
moreStuff: {
magicNumber: 44,
something: 'foo2'
}
}
}
}
}
}
let hasIt = contains(nestedObject, 44); // true
let doesntHaveIt = contains(nestedObject, "foo"); // false
Answer 6
Question 7: Parse a multi-dimensional array
Given a multi-dimensional integer array, return the total number of integers stored inside this array
Sample:
var seven = totalIntegers([[[5], 3], 0, 2, ['foo'], [], [4, [5, 6]]]); // 7
Answer 7
Question 8:
Write a function that sums squares of numbers in list that may contain more lists
Sample:
var l = [1,2,3];
console.log(SumSquares(l)); // 1 + 4 + 9 = 14
l = [[1,2],3];
console.log(SumSquares(l)); // 1 + 4 + 9 = 14
l = [[[[[[[[[1]]]]]]]]]
console.log(SumSquares(l)); // 1 = 1
l = [10,[[10],10],[10]]
console.log(SumSquares(l)); // 100 + 100 + 100 + 100 = 400
Answer 8
Question 9:
The function should return an array containing repetitions of the number argument. For instance, replicate(3, 5) should return [5,5,5]. If the times argument is negative, return an empty array.
Sample:
console.log(replicate(3, 5)) // [5, 5, 5]
console.log(replicate(1, 69)) // [69]
console.log(replicate(-2, 6)) // []