河内半塔

时间:2019-06-11 05:29:26

标签: c++ c++14

void semiHanoi(int n, char source, char destination, char temp) {
    if (n == 2) {//base case
        cout << "Move from " << source << " to " << destination << endl;
        cout << "Move from " << temp << " to " << destination << endl;
    }
    else {
        semiHanoi((n - 1), source, destination, temp);//to make moves
        semiHanoi(2, destination, temp, source);
        //semiHanoi(2 * (n - 1), destination, source, temp);

    }
}

我已经尝试了很多,但是无法弄清楚递归调用的内容和方式! 请帮助

这是问题: 半河内问题与河内问题非常相似。唯一的区别是,在半河内输入的磁盘必须是偶数个磁盘,例如2n,并且它们的设置如下图a所示。钉A具有所有偶数磁盘,例如2,4,6,…,钉B具有其余的磁盘(所有奇数磁盘,例如1,3,5,...)。半河内的移动规则与河内的规则相同:•一次只能移动一个磁盘•较大的磁盘不能放在较小的磁盘上目的是将所有磁盘移动到钉C上如图b所示 这是磁盘最初的样子

enter image description here

0 个答案:

没有答案