void Hanoi_move(int n,char A,char B,char C){
//A上的n个圆盘移动到C上
//B为辅助放置位置
//解:n=1:A->C
//n>1: n-1个 A->B
if(n==1){//递归结束的标志
cout<<A<<" -> "<<C<<endl;
}else{
Hanoi_move(n-1,A,C,B);//将n-1个圆盘放置到辅助B位置
cout<<A<<" -> "<<C<<endl;//移动第n个到C位置
Hanoi_move(n-1,B,A,C);//将n-1个圆盘放置到C位置
}
}
递归:
1、将一个问题分解成有限个最简处理的子问题(其中每一步都要用到前一步或前几步的结果),同时所有子问题的处理方式一致;
f(n)=f(f(n-1))=……=f(f(……f(1)))
2、处理方式是由内到外-----先运算最内层的函数,依次运算到最外层
3、保存最内层或上一层运算结果时运用的系统栈,即通用系统栈(函数栈+数据栈)
4、将递归改写为非递归时,需自定义栈来实现非递归(递归的处理数据量足够大时,将导致函数栈溢出而死机,栈的大小是固定的)
5、非递归也可以看作一种将栈“显化”的递归方式(栈的大小自定义)
6、待修改+补充