山理上太军 IVEY0球TECHNO1o0Y 华品会骨您到 久 2025 21
2025年4月3日 21
归东程子太军 SHANDONG UNIVERSITY OF TECHNOLOOY Hanoi塔算法: void hanoi(int n,int a,int b,int c) ① if (n>0) { ②③④ hanoi(n-1,a,c,b); move(a,c); ⑥ hanoi(n-1,b,a,c); 2025年4月3日 22
2025年4月3日 22 Hanoi塔算法: void hanoi(int n, int a, int b, int c) ① { ② if (n > 0) ③ { ④ hanoi(n-1, a, c, b); ⑤ move(a,c); ⑥ hanoi(n-1, b, a, c); ⑦ } ⑧ } ⑨
归东露子太军 SHANDONG UNIVERSITY OF TECINOLOGY 器纹点会器空会空是路 2025年4月3日 23
2025年4月3日 23
归求程上太军 SHANDONG UNIVERSITY OF TECHNOLOOY 华容约深完是红器分深是容 递归函数的运行轨迹 在递归函数中,调用函数和被调用函数是同一 个函数,需要注意的是递归函数的调用层次,如果 把调用递归函数的主函数称为第0层,进入函数后, 首次递归调用自身称为第1层调用;从第层递归调 用自身称为第计1层。反之,退出第计1层调用应该 返回第层。采用图示方法描述递归函数的运行轨 迹,从中可较直观地了解到各调用层次及其执行情 况。 2025年4月3日 24
2025年4月3日 24 递归函数的运行轨迹 在递归函数中,调用函数和被调用函数是同一 个函数,需要注意的是递归函数的调用层次,如果 把调用递归函数的主函数称为第0层,进入函数后, 首次递归调用自身称为第1层调用;从第i层递归调 用自身称为第i+1层。反之,退出第i+1层调用应该 返回第i层。采用图示方法描述递归函数的运行轨 迹,从中可较直观地了解到各调用层次及其执行情 况
归本置上太军 Hanio(2,A,C,B) Move (A,C) Hanio(1,A,B,C) Hanio(3,A,B,C) ↓ Move(A,B) >Hanio(1,C,A,B) Hanio(2,A,C,B) Hanio(I,C,A,B) Move(C,B) Move (A,C) Hanio(2,B,A,C) Hanio(1,B,C,A) ↓ Hanio(1,B,C,A) Move (B,A) Hanio(2,B,A,C) Move(B,C) Hanio(1,A,B,C) Hanio(1,A,B,C) Move (A,C) 结束 2025年4月3日 25
2025年4月3日 25 Hanio(3,A,B,C) Hanio(2,A,C,B) Hanio(1,A,B,C) Move (A,C) Move (A,B) Hanio(1,C,A,B) Hanio(1,A,B,C) Hanio(2,A,C,B) Move (C,B) Hanio(1,C,A,B) Move (A,C) Hanio(2,B,A,C) Hanio(1,B,C,A) Move (B,C) Hanio(1,A,B,C) Hanio(1,B,C,A) Move (A,C) Hanio(2,B,A,C) Move (B,A) Hanio(1,A,B,C) 结束