Recursion और Call Stack
हर recursive function में base case और उसकी ओर progress चाहिए।
Recursion और Call Stack क्या है?
हर recursive function में base case और उसकी ओर progress चाहिए।
छोटे instance से problem solve करें।
महत्वपूर्ण बातें
- Empty, single, duplicate और sorted input test करें।
- Correctness और optimization अलग रखें।
- Production में standard library को प्राथमिकता दें।
C और C++ code examples
main.c
#include <stdio.h>
unsigned long long factorial(unsigned number) {
return number < 2 ? 1 : number * factorial(number - 1);
}
int main(void) {
printf("%llu\n", factorial(6));
}
720
C++
main.cpp
#include <iostream>
constexpr unsigned long long factorial(unsigned number) {
return number < 2 ? 1 : number * factorial(number - 1);
}
int main() {
constexpr auto value = factorial(6);
std::cout << value << '\n';
}
720
C और C++ की तुलना
Factorial O(n) time और O(n) stack लेता है; बड़े inputs validate करके iterative solution सोचें।
C
Loops, pointers, lengths और buffers स्पष्ट लिखे जाते हैं।
C++
Iterators और algorithms operation को storage से अलग करते हैं।
अभ्यास
दोनों versions चलाकर बदलें और language guarantees की तुलना करें।
- हर comparison trace करें।
- Duplicates और extreme values test करें।
- Standard library के विरुद्ध benchmark करें।