मुझे पुनरावृत्ति मिलती है, तथ्यों के समान बहुत सीधे आगे के अलावा, समझने में बहुत मुश्किल होती है। निम्न स्निपेट स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करता है। क्या कोई इसे समझने में मेरी सहायता कर सकता है। रिकर्सन को सही तरीके से समझने का तरीका क्या है।क्रमपरिवर्तन उत्पन्न करने के लिए रिकर्सन को समझना
void permute(char a[], int i, int n)
{
int j;
if (i == n)
cout << a << endl;
else
{
for (j = i; j <= n; j++)
{
swap(a[i], a[j]);
permute(a, i+1, n);
swap(a[i], a[j]);
}
}
}
int main()
{
char a[] = "ABCD";
permute(a, 0, 3);
getchar();
return 0;
}
कागज पर इसे बाहर स्केच प्रयास करें, या आप भी एक डिबगर में कोड के माध्यम से एकल कदम कोशिश कर सकते हैं। –
किसी एक नए के लिए जोड़ना: [किसी दिए गए स्ट्रिंग के सभी क्रमपरिवर्तन मुद्रित करने के लिए एक सी प्रोग्राम लिखें] (http://www.geeksforgeeks.org/write-ac-program-to-print-all-permutations-of-a- दिए गए स्ट्रिंग /) –
पहली बात यह है कि रिकर्सन कभी-कभी सुरुचिपूर्ण, अंतर्ज्ञानी समाधानों में परिणाम देता है। कभी-कभी समाधान सभी अंतर्ज्ञानी पर सुरुचिपूर्ण नहीं है, क्योंकि मेरा मानना है कि यह यहां है। कभी-कभी यह न तो सुरुचिपूर्ण, न ही अंतर्ज्ञानी है। क्या कुछ सुरुचिपूर्ण अभी तक सहज हो सकता है? मुझे नहीं पता। इस मामले में पहली बात समझने की जरूरत है, धारणात्मक, सरणी में विभिन्न तत्व जोड़े को स्वैप करके सभी क्रमपरिवर्तन बनाने का तरीका है। फिर आपको यह समझने की आवश्यकता है कि इस अवधारणा को पूरा करने के लिए रिकर्सिव एल्गोरिदम कैसे लागू किया जाता है। यह प्रत्येक चरण में पेपर पर रिकर्सन पेड़ निकालने में मदद कर सकता है। – broadbear