هر متخصص مبتدی علوم کامپیوتری حتما درگیر مسائل کلاسیک خاص شده است.مسئله ی برج های هانوی از معروف ترین مسائل علوم کامپیوتر می باشد.طبق یک روایت افسانه ای کشیشانی در معبدی از شرق سعی می کنند پشته ای از چند دیسک رااز یک میله به میله ای دیگر انتقال دهند. پشته ی اولیه ی دارای 64 دیسک می باشد که روی یک میله قرار گرقته اند و اندازه ی دیسک ها از پایین به بالا به ترتیب نزولی مرتب شده اند.کشیشان می خواهند این پشته را از یک میله به میله ای دیگر انتقال دهند به شرطی که اولا در هر مرحله فقط یک دیسک جابه جا شود و هیچ موقع نباید دیسک بزرگ تر بالای دیسک کوچک تر قرار گیرد.میله ی سوم نیز برای نگهداری موقف دیسک ها استفاده شده است.گفته می شود زمانی که کشیشان کار خود را به پایان برسانند پایان جهان فرا می رسد. بنابراین انگیزه ی زیادی در اسان کردن کار ان ها نیست.
#include<iostream>
#include<conio.h>
using namespace std;
void towers(int, int, int, int);
int main()
{
int nDisks;
cout << "Enter the starting number of disks: ";
cin >> nDisks;
towers(nDisks, 1, 3, 2);
getch();
return 0;
}
void towers(int disks, int start, int end, int temp)
{
if (disks == 1) {
cout << start << " --> " << end << '\n';
return;
}
//move disks - 1 disks from start to temp
towers (disks - 1, start, temp, end);
//move last disks from start to end
cout << start << " --> " << end << '\n';
//move disks - 1 disks from temp to end
towers(disks - 1, temp, end, start);
}