Hey everyone!
I've stumbled upon this interesting JavaScript code that calculates the factorial of a number, and I'd love to hear your thoughts on it!
function factorial(n) {
if (n === 0 || n === 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
// Test the factorial function
const num = 5;
console.log(`Factorial of ${num} is: ${factorial(num)}`);
Discussion Points:
Logic in the Code: Can you explain how the factorial function works, especially the recursive part?
Test Case: The code tests the factorial function with the number 5. How would you test it with different numbers?
Recursion: What are your thoughts on using recursion to solve this problem? Are there alternative approaches you would consider?
Improvements: Are there any improvements or optimizations you would suggest for this code?
Explore more on my Youtube channel
Feel free to share your insights, questions, or any other comments you have about the code!
Let's dive in and explore together! ๐๐
Top comments (11)
For me, I would prefer to memoize the result. I'm not too worried about coding styles. As long as it is easy to read and it's correctly computed.
There are many coding styles and it is worth noting that one size doesn't fit all. So, it is totally ok to have your own coding style as long as the code follows the code practices and industry standards.
My point is just to improve performance.
I get it
You can use a simple loop, but recursion can be shorter:
With respect to your code: Why not check for (n <= 1) ? And this is a perfect case for the ternary operator, so your code could look like this:
Smart thinking.
Thank you much!
Talking about improvements: else after return is superfluous. So, your unchanged code should look like this:
And your code is a bit dangerouse: see what happens, if you try
factorial(-1)
. Checking for <=1 covers this too....Thank you for pointing this out to me. It should cover negative numbers
๐
Smart thinking @jonrandy