रिकर्सन
रिकर्सन समस्याओं को विभाजित और हल करने में उपयोगी है। प्रत्येक रिकर्सिव कॉल स्वयं अन्य रिकर्सिव कॉल्स को जन्म देती है। एक रिकर्सिव फंक्शन के केंद्र में दो प्रकार के केस होते हैं: बेस केस, जो रिकर्सन को समाप्त करने के लिए कहते हैं, और रिकर्सिव केस जो उस फंक्शन को कॉल करते हैं जिसमें वे हैं। एक सरल समस्या जो स्वाभाविक रूप से रिकर्सिव समाधानों का उपयोग करती है वह है फैक्टोरियल की गणना। रिकर्सिव फैक्टोरियल एल्गोरिदम में दो केस होते हैं: बेस केस जब n = 0, और रिकर्सिव केस जब n > 0।
बैकट्रैकिंग
बैकट्रैकिंग कुछ कम्प्यूटेशनल समस्याओं के समाधान खोजने के लिए एक सामान्य एल्गोरिदम है, जो समाधानों के लिए विकल्पों को बढ़ाकर बनाता है, और उन ट्रैक्स की निरंतर प्रोसेसिंग को अस्वीकार करता है जो असंभव समाधानों की ओर ले जाएंगे। बैकट्रैकिंग हमें पिछले विकल्पों को पूर्ववत करने की अनुमति देता है यदि वे गलत साबित होते हैं।
फैक्टोरियल का एक विशिष्ट कार्यान्वयन निम्नलिखित है -
उदाहरण
def factorial(n):
# बेस केस के लिए टेस्ट
if n == 0:
return 1
# गणना और रिकर्सिव कॉल करें
f = n * factorial(n-1)
print(f)
return(f)
factorial(4)
यह कोड 1, 2, 4, 24 अंक प्रिंट करता है। फैक्टोरियल 4 की गणना के लिए प्रारंभिक पैरेंट कॉल के अलावा चार रिकर्सिव कॉल्स की आवश्यकता होती है।