Mihajlo,hvala na odgovoru,vjerovatno bi tako nekako trebalo ici,imam slicnu ideju,no medjutim analizom ovog koda,
vec nakon zadavanja funkciji da ispise poteze za 3 diska pojavljuje se problem.
Nakon kompajliranja program ispisuje:
1.
2.
3.
6.
7.
14.
15.
Analizirajuci tok izvrsavanja funkcije,vec nakon cetvrtog rekurzivnog poziva (tj.nakon sto je zavrseno izvrsavanje prvog
rekurzivnog poziva,dok prvi puta varijabla "rings" ne postane 0,pocinje ispisivati redom 1,2,3),
funkcija daje Hanoi(1,2,3,1,2)=3,pri cemu vraca na move=2+Hanoi(1,2,3,1,2) sto je jednako 5,
nakon naredbe "++move" povecava move na 6,te ispisuje 6.
I meni se otprilike slicne oscilacije desavaju,gdje sam izbacio problem hanojevih kula,da mi ne ometaju
u razmisljanju te sveo samo funkciju na problem ispisivanja redoslijed poteza,funkcija "kloz":
Code:
int kloz(int n,int a=1) {
if(n>1) {
a+=kloz(n-1,a);
a+=kloz(1,a);
a+=kloz(n-1,a);
}
if(n==1){
cout<<a<<endl;
return 1;
}
else return --a;
}
Medjutim kompajliranjem za primjer 4 "diska" ispisuje sljedeci redoslijed:
1,2,3,4,5,6,7,12,13,14,15,28,29,30,31.
Dok recimo za 3 ispisuje ispravno.
Pozdrav.