Türme von Hanoi - Iterativer Algorithmus + Fragen



  • Hi,
    ich habe vor kurzem mit dem C-Programmieren begonnen und mir die Türme von Hanoi zu Herzen genommen. Ich habe mir dieses Spiel zuerst rekursiv vorgenommen, was auch kein problem darstellte. Danach habe ich mich im Internet auf die Suche nach einem iterativen Alghoritmus gemacht und auch einen gefunden, doch leider verstehe ich diesen ganz und gar nicht, vorallem nicht die Modulo 3 Geschichte. könnte mir jemand diesen erklären? am besten wäre es, wenn mir jemand den ganzen Quelltext auskommentieren könnte, das wäre sehr nett!

    Vielen Dank schonmal

    #include <stdio.h>
    
    void hanoi_i(int n, int stange_von, int stange_nach, int stange_frei)
    {
    	int zieh=(1<<n)-1, zug=1, i;
    	stange_von--;
    	stange_nach--;
    	if(!(n&1))
    	{
    		stange_nach = 3 - stange_von - stange_nach;
    	}
    
    	if((3 + stange_nach - stange_von)%3 ==1)
    	{
    		zug++;
    	}
    
    	while(zieh--)
    	{
    		for(i=zieh, stange_frei=0; i&1; stange_frei++, i>>=1);
    		if(stange_frei&1)
    		{
    			printf("Bewege von %d nach %d\n", stange_nach+1, stange_von+1);
    		}
    		else
    		{
    			printf("Bewege von %d nach %d\n", stange_von+1, stange_nach+1);
    		}
    
    		stange_von=(stange_von + zug)%3;
    		stange_nach=(stange_nach + zug)%3;
    	}
    }
    


  • http://en.wikipedia.org/wiki/Towers_of_hanoi#Non-recursive_solution
    Tower of Hanoi - Wikipedia, the free encyclopedia


Anmelden zum Antworten