C语言——hanoi递归函数执行

关于C语言hanoi问题每一层的递进关系。

在用递归函数解决hanoi的问题时,可以理解代码和编程思想。
但对于递归函数在每一次调用时A,B,C中的值怎么变化很难理解。

问题相关代码,请勿粘贴截图

实现功能的关键源代码:

img

运行结果及报错内容

img

我想要达到的结果

现在我不太清楚的问题有:

  1. 程序是从上往下依次执行的,但是根据结果来看,一个函数发生了多次调用,而且上上下下往复执行,看不清楚其中的规律。
    所以请各位解释下,在程序过程中,三个递归函数到底是怎样调用的?
  2. 在调用过程中,one/two/three三个变量的值一直在发生变化,大家知道为什么会这样变化吗?

“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出