python的汉诺塔递归算法

代码在图片里,我能看懂,但是拿笔验算时有个疑惑,当n=2时,else部份第一行变成hanoi(1,x,z,y),调用hanoi函数打印第一行为A -> B,这我可以理解。但是当n=3时,else部分变成hanoi(2,x,z,y),调用函数继续hanoi(1,x,z,y),按照前面来说应该答应A->B,然而执行结果第一行为A->C,小弟愚笨,望大神解惑图片说明

hanoi(3,x,y,z)=>n>1执行 hanoi(2,x,z,y)=>n>1 执行hanoi(1,x,y,z)=>n==1输出 printf(x,'--->',z),这里的参数是A,B,C,把A,B,C,代入x,y,z所以第一个输出A--->C

注意在else下面第一个hanoi(n,x,z,y),看参数顺序不是hanio(n,x,y,z)

递归时 参数顺序改变了 总结是 奇数层 第一步先移到c 偶数层 第一步先移到b
原因是每次递归时参数顺序都有变动