深入递推,逐级回退
递归问题 深搜dfs 在有条件的情况下试探各种情况 找出口
递归的终止条件
递归函数参数边界值的界定
汉诺塔问题Hanoi
/*思想
1.src上的n-1个盘子移到medium
2.src剩下的一个最大的盘子移到dest
3.medium上的n-1个盘子移到dest
*/
//把src最上面的一个盘子移到dest
void move(char src, char dest){
cout<<src<<"—>" <<dest<<endl;
}
//把n个盘子从src移到dest,以medium为中介
void hanoi(int n, char src, char medium, char dest)
{
if(n==1) move(src,dest); //边界条件
else{
hanoi(n-1, src, dest, medium);
move(src, dest);
hanoi(n-1, medium, src, dest);
}
}
hanoi(3,'A','B','C');
理解每步的调用过程