More On Recursion
More On Recursion
P. P. Chakrabarti
04-02-03
Tower of Hanoi
04-02-03
Tower of Hanoi
04-02-03
Tower of Hanoi
04-02-03
Tower of Hanoi
04-02-03
04-02-03
04-02-03
04-02-03
04-02-03
TOH runs:
void towers(int n, char from, char to, char aux) { if (n==1) { printf ("Disk 1 : %c -> %c \n", from, to) ; return ; } towers (n-1, from, aux, to) ; printf ("Disk %d : %c -> %c\n", n, from, to) ; towers (n-1, aux, to, from) ; } main() { int n; scanf("%d", &n); towers(n,'A',C',B'); }
[ppchak]$ ./a.out 2 Disk 1 : A -> B Disk 2 : A -> C Disk 1 : B -> C [ppchak]$ ./a.out 3 Disk 1 : A -> C Disk 2 : A -> B Disk 1 : C -> B Disk 3 : A -> C Disk 1 : B -> A Disk 2 : B -> C Disk 1 : A -> C
10
04-02-03
11
04-02-03
12
04-02-03
A Run:
int max (int best,int n) { int data, result ; [ppchak]$ ./a.out if (n) scanf("%d", &data); 5 else return best; 3 if (data > best) result = max (data, n-1); 7 else result = max(best, n-1); 4 return result; } 1 main() 6 { int item, numb; Answer = 7 scanf("%d", & numb); if (numb) { scanf("%d", &item); printf(" Answer = %d\n", max(item, numb-1)); }}
13
04-02-03
14
04-02-03
fib (5) fib (3) fib (1) fib (0) fib (2) fib (1) fib (2) fib (0) fib (4) fib (3) fib (2) fib (1)
15
04-02-03