您的位置:首页 > 其它

汉诺塔递归问题

2016-03-23 21:22 489 查看
将n个盘子从A座移到C座。

过程:

(1)将n-1个盘子借助C座移到B座;

(2)将第n个盘子从A座移到C座;

(3)将B座上的n-1个盘子借助A座移动C座。

#include <iostream>

int i=0;

void move(int n,char from,char to)
{
i++;
cout<<"第"<<i<<"步: 将第"<<n<<"个盘子从"<<from<<"移动到"<<to<<endl;
}

void f(int n,char from,char mid,char to)
{
if(n==1)
move(1,from,to);
else{
f(n-1,from,to,mid); //将n-1个盘子借助C从A移到B
move(n,from,to); //将第n个盘子从A移到C
f(n-1,mid,from,to); //将n-1个盘子借助A从B移到C
}
}

int main()
{
int n;
cin>>n;
f(n,'A','B','C');
return 0;
}




大三考研狗现在才搞懂汉诺塔,我怎么不吃屎呢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: