汉诺塔递归问题

来源:互联网 发布:网游数据库 编辑:程序博客网 时间:2024/06/05 00:58


将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;}


大三考研狗现在才搞懂汉诺塔,我怎么不吃屎呢

0 0