汉诺塔问题动态演示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

// 汉诺塔
void main () { int n ;
printf( " Input the number of diskes:\n “) ; scanf(“%d”,&n) ;
hanoi ( n, 'A' , 'B' , 'C' ) ; }
Stack
Output
n a b c
wk.baidu.com
// 汉诺塔
void main () { int n ;
H ( 3, A, B, C )
Stack
Output A C
H(n-1,a,c,b) H ( 2, A, C, B )
H(n-1,a,c,b)
H ( 1, A, B, C )
1 A B C 2 A C B 3 A B C
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H(n,A,B,C)
H ( 3, A, B, C )
Stack
Output 0 A C B 1 C A B 2 A C B 3 A B C A A C C B B
H(n-1,a,c,b)
H ( 2, A, C, B )
H(n-1,b,a,c)
H ( 1, C, A, B )
H(n-1,b,a,c) H ( 0, A, C , B )
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H(n,A,B,C)
H ( 3, A, B, C )
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H(n,A,B,C)
H ( 3, A, B, C )
Stack
Output A C 0 B A C 1 A B C 2 A C B 3 A B C
H(n-1,a,c,b) H ( 2, A, C, B )
H(n-1,a,c,b)
H ( 1, A, B, C )
H(n-1,b,a,c) H ( 0, B , A, C )
H(n,A,B,C)
H ( 3, A, B, C )
Stack
Output A A 2 A C B 3 A B C C B
H(n-1,a,c,b)
H ( 2, A, C, B ) cout
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H ( 3, A, B, C )
Stack
Output 0 C B A 1 C A B 2 A C B 3 A B C A A C B
H(n-1,a,c,b)
H ( 2, A, C, B )
H(n-1,b,a,c) H ( 1, C, A, B )
H(n-1,a,c,b) H ( 0, C, B , A)
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H(n,A,B,C)
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H(n,A,B,C)
H(n,A,B,C)
H ( 3, A, B, C )
Stack
Output 0 A C B 1 A B C 2 A C B 3 A B C
H(n-1,a,c,b) H ( 2, A, C, B )
H(n-1,a,c,b) H ( 1, A, B, C )
H(n-1,a,c,b) H ( 0, A, C, B )
H(n,A,B,C)
H ( 3, A, B, C )
Stack
Output 0 C B A 1 C A B 2 A C B 3 A B C A A C B
H(n-1,a,c,b)
H ( 2, A, C, B )
H(n-1,b,a,c) H ( 1, C, A, B )
H(n-1,a,c,b) H ( 0, C, B , A)
Stack
Output
3 A B C
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
printf( " Input the number of diskes:\n “) ; scanf(“%d”,&n) ;
hanoi ( n, 'A' , 'B' , 'C' ) ; }
H(n,A,B,C)
H ( 3, A, B, C )
Stack
Output
3 A B C
n a b c
// 汉诺塔
H(n,A,B,C)
H ( 3, A, B, C )
Stack
Output A A 1 C A B 2 A C B 3 A B C C B
H(n-1,a,c,b)
H ( 2, A, C, B )
H(n-1,b,a,c) H ( 1, C, A, B )
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H ( 3, A, B, C )
Stack
Output A A 1 C A B 2 A C B 3 A B C C C B B
H(n-1,a,c,b)
H ( 2, A, C, B )
H(n-1,b,a,c)
H ( 1, C, A, B ) cout
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H ( 3, A, B, C )
Stack
Output 0 A C B 1 A B C 2 A C B 3 A B C
H(n-1,a,c,b) H ( 2, A, C, B )
H(n-1,a,c,b) H ( 1, A, B, C )
H(n-1,a,c,b) H ( 0, A, C, B )
n a b c
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H(n,A,B,C)
H(n,A,B,C)
H ( 3, A, B, C )
Stack
Output A C 0 B A C 1 A B C 2 A C B 3 A B C
H(n-1,a,c,b) H ( 2, A, C, B )
H(n-1,a,c,b)
H ( 1, A, B, C )
H(n-1,b,a,c) H ( 0, B , A, C )
H ( 3, A, B, C )
Stack
Output A A 1 C A B 2 A C B 3 A B C C C B B
H(n-1,a,c,b)
H ( 2, A, C, B )
H(n-1,b,a,c)
H ( 1, C, A, B )
n a b c
H ( 3, A, B, C )
Stack
Output A C
H(n-1,a,c,b) H ( 2, A, C, B )
H(n-1,a,c,b)
H ( 1, A, B, C ) cout
1 A B C 2 A C B 3 A B C
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H(n,A,B,C)
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H(n,A,B,C)
H ( 3, A, B, C )
Stack
Output 0 A C B 1 C A B 2 A C B 3 A B C A A C C B B
H(n-1,a,c,b)
H ( 2, A, C, B )
H(n-1,b,a,c)
H ( 1, C, A, B )
H(n-1,b,a,c) H ( 0, A, C , B )
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H(n,A,B,C)
// 汉诺塔
A
B
C
// 汉诺塔
A
B
C
// 汉诺塔
A
B
C
// 汉诺塔
A
B
C
// 汉诺塔
A
B
C
// 汉诺塔
A
B
C
// 汉诺塔
A
B
C
// 汉诺塔
A
B
C
// 汉诺塔
A
B
C
// 汉诺塔
A
B
C
// 汉诺塔
A
B
C
// 汉诺塔
A
B
C
// 汉诺塔 # include < stdio.h > void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b ) ; printf(“%c --> %c\n”, a , c) ; hanoi ( n-1, b, a, c ) ; } } void main () { int n ; printf( " Input the number of diskes:\n “) ; scanf(“%d”,&n) ; hanoi ( n, 'A' , 'B' , 'C' ) ; }
n a b c
void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b) ; printf(“%c -->%c\n“,a,c); hanoi (n-1, b, a, c) ; } }
H(n,A,B,C)
相关文档
最新文档