Problem: We need the sum of the number 1 to N. The N could be anything (100,200,500,33,21) like anything. What is the best approach to solve this little problem ?
so there are multiple way to solve this problem. We will discuss 3 solution .
1. Recursive way :
Using recursion we can solve this problem. Here is the solution
The time complexity of this code is O(n) because it makes n recursive calls, each of which takes constant time. The space complexity is also O(n) because each recursive call adds a level to the call stack. The maximum depth of the recursion is n, so the maximum amount of space on the call stack is proportional to n.
2. Using loop
Here we need 2 different variables in our code -- a variable where we can store the sum as we iterate through the values and add them (my_sum in my code), and another variable (i in my code) to iterate over the numbers from 0 to n.
The time complexity of this code is O(n). The while loop runs n+1 times, and each iteration takes constant time, resulting in a linear time complexity. The space complexity is O(1). The space used by the code does not increase with the size of the input n. The variables my_sum and i take constant space, and there are no data structures like arrays or lists that would take space proportional to n.
3. Arithmetic (Best Approach)
Our Recursive approach and Loop approach is correct and it will give us the sum of numbers from 1 to n. However, Recursion and Loop can be expensive in terms of time and space complexity, especially for large values of n.
A more efficient approach would be to use the formula for the sum of an arithmetic series. The sum of the first n natural numbers can be found using the formula n*(n+1)/2.
This approach has a time complexity of O(1), which is more efficient than the recursive approach.
Comments
Post a Comment