पाठ 28 / 42
Recursion
एक फ़ंक्शन जो छोटे इनपुट पर खुद को बुलाकर समस्या हल करता है।
Base case + recursive case
हर recursion को चाहिए (1) base case जो बिना recurse किए लौटे, और (2) recursive case जो base की ओर प्रगति करे। Base case चूकें और stack overflow मिलता है।
Call stack खुलता है
factorial(3) factorial(2) की प्रतीक्षा करता है जो factorial(1) की। फिर परिणाम वापस गुणा होते हैं।
def factorial(n):
if n <= 1: # base case
return 1
return n * factorial(n - 1) # recursive case
# factorial(3)
# = 3 * factorial(2)
# = 3 * (2 * factorial(1))
# = 3 * (2 * 1) = 6रूसी गुड़िया
एक गुड़िया खोलें तो अंदर छोटी, जब तक छोटी ठोस (base case) न मिले। फिर उन्हें क्रम में बंद करें।
Recursion → iteration
किसी भी recursion को स्पष्ट stack से फिर से लिखा जा सकता है। Tail recursion और दोहराए उप-समस्याएँ (Fibonacci) memoise या bottom-up जाने के संकेत हैं।