Tower of Hanoi Problem एक mathematics problem और puzzle है |इसमें तीन iron sticks होती और number of disks होती है |इस puzzle मे , सभी disks को एक stick से दुसरे stick मे transfer करनी है लेकिन कुछ शर्तो के साथ :-
1.केवल एक डिस्क ही एक समय मे मूव हो सकती है |
2.सभी मूव मे,किसी एक stick मे उपस्थित सबसे उपर वाली डिस्क को निकल सकते है और use किसी दुसरे stick मे सबसे उपर लगा सकते है |
3.कभी बड़ी डिस्क ,छोटी डिस्क के उपर नहीं होगी |
इस प्रॉब्लम का solution होगा |
अगर किसी दो डिस्क के साथ ये प्रॉब्लम solve की जाये तब :stick1 =A और stick 2 = B और stick 3 =C है |
1.सबसे छोटी डिस्क को A से B पर शिफ्ट करेगे |
2.दूसरी डिस्क को A से C पर शिफ्ट करेगे |
3.फिर छोटी डिस्क को B से C पर शिफ्ट करेगे |
इसका solution मे तीन STEPS मुख्य होते है:-
1.n-1डिस्क को A से B पर शिफ्ट करना |
2.n डिस्क को A से C पर शिफ्ट करना |
3.n-1 disks को B से C पर शिफ्ट करना |
जब ये problem तीन डिस्क के साथ होती है तब :
1.डिस्क1 को A से C पर SHIFT करते है |
2.डिस्क 2 को A से B पर शिफ्ट करते है |
3.डिस्क 1 को C से B पर शिफ्ट करते है |
4.डिस्क 3 को A से C पर शिफ्ट करते है |
5.डिस्क 1 को B से A पर शिफ्ट करते है |
6.डिस्क 2 को B को C पर शिफ्ट करते है |
7डिस्क 1 को A से C पर शिफ्ट करते है |
इस लॉजिक को केवल RECURSION से बनाया जा सकता है |
Recursion का function मे महत्वपूर्ण योगदान है | इसके पिछले article मे हमने recursion की परीभाषा ,प्रकार और कुछ basic उदहारण देखे थे |लेकिन इस article मे हम कुछ advance problems जिनका solution केवल recursion से possible है को discuss करेगे |
Tower of Hanoi Problem :
Tower of Hanoi Problem एक mathematics problem और puzzle है |इसमें तीन iron sticks होती और number of disks होती है |इस puzzle मे , सभी disks को एक stick से दुसरे stick मे transfer करनी है लेकिन कुछ शर्तो के साथ :-
1.केवल एक डिस्क ही एक समय मे मूव हो सकती है |
2.सभी मूव मे,किसी एक stick मे उपस्थित सबसे उपर वाली डिस्क को निकल सकते है और use किसी दुसरे stick मे सबसे उपर लगा सकते है |
3.कभी बड़ी डिस्क ,छोटी डिस्क के उपर नहीं होगी |
इस प्रॉब्लम का solution होगा |
अगर किसी दो डिस्क के साथ ये प्रॉब्लम solve की जाये तब :stick1 =A और stick 2 = B और stick 3 =C है |
1.सबसे छोटी डिस्क को A से B पर शिफ्ट करेगे |
2.दूसरी डिस्क को A से C पर शिफ्ट करेगे |
3.फिर छोटी डिस्क को B से C पर शिफ्ट करेगे |
इसका solution मे तीन STEPS मुख्य होते है:-
1.n-1डिस्क को A से B पर शिफ्ट करना |
2.n डिस्क को A से C पर शिफ्ट करना |
3.n-1 disks को B से C पर शिफ्ट करना |
जब ये problem तीन डिस्क के साथ होती है तब :
1.डिस्क1 को A से C पर SHIFT करते है |
2.डिस्क 2 को A से B पर शिफ्ट करते है |
3.डिस्क 1 को C से B पर शिफ्ट करते है |
4.डिस्क 3 को A से C पर शिफ्ट करते है |
5.डिस्क 1 को B से A पर शिफ्ट करते है |
6.डिस्क 2 को B को C पर शिफ्ट करते है |
7डिस्क 1 को A से C पर शिफ्ट करते है |
इस लॉजिक को केवल RECURSION से बनाया जा सकता है
#include <stdio.h>
void towers(int, char, char, char);
int main()
{
int n;
printf(“Enter the number of disks : “);
scanf(“%d”, &n);
printf(“The sequence of moves involved in the Tower of Hanoi are :\n“);
towers(n, ‘A’, ‘C’, ‘B’);
}
void towers(int n, char a, char b, char c)
{
if (n == 1)
printf(“\n Move disk 1 from peg %c to peg %c”, a, c);
return;
}
towers(n – 1, a, c, b);
printf(“\n Move disk %d from peg %c to peg %c”, n, a, b);
towers(n – 1, c, b, a)
}