hanoi(int n int one int two int three)
n=3
hanoi(3,A,B,C)注释:n=3,one=A,two=B,three=C!
执行到hanoi(n-1,one,three,two);hanoi(3-1,A,C,B)
调用hanoi函数(重新调用)
hanoi(2,A,C,B)注释:n=2,one=A,two=C,three=B!
执行到hanoi(n-1,one,three,two);hanoi(2-1,A,B,C)
再次调用hanoi函数(重新调用)
hanoi(1,A,B,C)注释:n=1,one=A,two=B,three=C!
n=1
执行
move(one,three)
输出:A-->C.............................................................a
执行完hanoi(1,A,B,C)函数后返回到hanoi(2,A,C,B)函数中。注释:被调函数执行完之后返回调用它的 函数中(主调函数)。
执行hanoi(2,A,C,B)函数中的move(one,three)函数
输出:A-->B..............................................................b
之后执行到move(one,three)下面的hanoi(n-1,two,one,three)
hanoi(2-1,C,A,B)
函数调用hanoi函数。
hanoi(1,C,A,B)
n=1
执行
move(one,three)
输出:C-->B...............................................................c
彻底执行完hanoi(2,A,C,B)函数。
返回调用hanoi(2,A,C,B)此函数的hanoi的(3,A,B,C)函数中
执行hanoi(n-1,one,three,two)下面的move(one,three)函数
输出:A-->C................................................................d
之后执行hanoi(n-1,two,one,three):hanoi(3-1,B,A,C)
调用hanoi函数
hanoi(2,B,A,C)注释:n=2,one=B,two=A,three=C!
执行hanoi(2-1,B,C,A)
调用hanoi函数
hanoi(1,B,C,A)
n=1
执行
move(one,three)
输出:B-->A.................................................................e
返回调用此函数的hanoi(2,B,A,C)函数中
执行move(one,three)
输出:B-->C..................................................................f
执行hanoi(n-1,two,one,three):hanoi(2-1,A,B,C)
调用hanoi函数
n=1
执行move(one,three)
输出:A-->C...................................................................g
返回hanoi(2,B,A,C)函数中
a,b,c,d,e,f,g加一起是函数的执行结果
递归调用时重新调用函数。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务