小白求大神解答汉诺塔递归原理问题

汉诺塔核心是怎么递减的如代码:void hanoi(int n,char one ,char two,char three)

{ void move(char x,char y);
if(n==1)
{
move(one,three);
}else
{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}

我想知道他们是怎么替换字符的,栈的概念能理解,但是不明白是他们是怎么传递的

}图片说明

hanoi(n-1,one,three,two);
作为参数递归调用,那么那一个调用中的n自然比当前的n少1。
堆栈是函数调用自动管理的,不用管。