runner% cat hanoi.c /* Towers of Hanoi program */ /* Written by N.R. Wagner, 28 Jan 1998 */ #include void move(int start, int temp, int end, int n); void main() { int n; scanf("%i", &n); move(1, 2, 3, n); } void move(int start, int temp, int end, int n) { static int step = 0; if (n > 0){ move(start, end, temp, n-1); printf("Step %2i:" " Move disk %i from %i to %i.\n", ++step, n, start, end); move(temp, start, end, n-1); } } runner% lint -m -u hanoi.c function returns value which is always ignored printf scanf runner% cc -o hanoi hanoi.c runner% hanoi 1 Step 1: Move disk 1 from 1 to 3. runner% hanoi 2 Step 1: Move disk 1 from 1 to 2. Step 2: Move disk 2 from 1 to 3. Step 3: Move disk 1 from 2 to 3. runner% hanoi 3 Step 1: Move disk 1 from 1 to 3. Step 2: Move disk 2 from 1 to 2. Step 3: Move disk 1 from 3 to 2. Step 4: Move disk 3 from 1 to 3. Step 5: Move disk 1 from 2 to 1. Step 6: Move disk 2 from 2 to 3. Step 7: Move disk 1 from 1 to 3. runner% hanoi 4 Step 1: Move disk 1 from 1 to 2. Step 2: Move disk 2 from 1 to 3. Step 3: Move disk 1 from 2 to 3. Step 4: Move disk 3 from 1 to 2. Step 5: Move disk 1 from 3 to 1. Step 6: Move disk 2 from 3 to 2. Step 7: Move disk 1 from 1 to 2. Step 8: Move disk 4 from 1 to 3. Step 9: Move disk 1 from 2 to 3. Step 10: Move disk 2 from 2 to 1. Step 11: Move disk 1 from 3 to 1. Step 12: Move disk 3 from 2 to 3. Step 13: Move disk 1 from 1 to 2. Step 14: Move disk 2 from 1 to 3. Step 15: Move disk 1 from 2 to 3. runner% hanoi 5 Step 1: Move disk 1 from 1 to 3. Step 2: Move disk 2 from 1 to 2. Step 3: Move disk 1 from 3 to 2. Step 4: Move disk 3 from 1 to 3. Step 5: Move disk 1 from 2 to 1. Step 6: Move disk 2 from 2 to 3. Step 7: Move disk 1 from 1 to 3. Step 8: Move disk 4 from 1 to 2. Step 9: Move disk 1 from 3 to 2. Step 10: Move disk 2 from 3 to 1. Step 11: Move disk 1 from 2 to 1. Step 12: Move disk 3 from 3 to 2. Step 13: Move disk 1 from 1 to 3. Step 14: Move disk 2 from 1 to 2. Step 15: Move disk 1 from 3 to 2. Step 16: Move disk 5 from 1 to 3. Step 17: Move disk 1 from 2 to 1. Step 18: Move disk 2 from 2 to 3. Step 19: Move disk 1 from 1 to 3. Step 20: Move disk 3 from 2 to 1. Step 21: Move disk 1 from 3 to 2. Step 22: Move disk 2 from 3 to 1. Step 23: Move disk 1 from 2 to 1. Step 24: Move disk 4 from 2 to 3. Step 25: Move disk 1 from 1 to 3. Step 26: Move disk 2 from 1 to 2. Step 27: Move disk 1 from 3 to 2. Step 28: Move disk 3 from 1 to 3. Step 29: Move disk 1 from 2 to 1. Step 30: Move disk 2 from 2 to 3. Step 31: Move disk 1 from 1 to 3. runner%