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所示 这是磁盘最初的样子