汉诺塔,C语言是怎么实现的柱子交换的

学习谭浩强C,
递归求阶乘可以理解,
遇到汉诺塔这种递归,有点懵。
{第一句:hanoi(n-1,A,C,B);
第二句:move(A,C);
第三句:hanoi(n-1,B,A,C);
}
如果用递归求阶乘的思想理解第一句输出的应该是A-->C,实际单使用第一句也是这样。
为什么三句一起,就会让ABC的位置发生改变呢?
汉诺塔的思想我理解了的,但是程序是在哪改变的使的move中的参数发生改变的呢?
求各各位指点,帖子看了不少了,依然不懂。

img

我以前理解是这样的
// 把A上的n-1个圆盘移动到B上
第一句:hanoi(n-1,A,C,B);

// 把A上最后一个圆盘移动到C上
第二句:move(A,C);

// 递归,把B上的n-1个圆盘移动到C上
第三句:hanoi(n-1,B,A,C);