注册 登录
编程论坛 C++教室

汉诺塔递归

iJAY 发布于 2014-02-10 04:37, 388 次点击
#include<iostream>
using namespace std;
void hanoi(int n, char x, char y, char z);
int main()
{
    int n;
    cout << "Please input the number of plates: ";
    cin >> n;
    hanoi(n, 'A', 'B', 'C');
    return 0;
}
void hanoi(int n, char x, char y, char z)
{
    if (n>0) {        // 想问下为什么一定要有这个条件? 如果删掉if语句的话,即使我输入的是n>0,没有提示error, 但是程序运行不了。
        hanoi(n - 1, x, z, y);
        cout << "Move " << n << ":" << x << "->" << z << endl;
        hanoi(n - 1, y, x, z);
    }
}
1 回复
#2
玩出来的代码2014-02-10 14:32
递归总要有个终止的时候,不能无限递归下去。没有限制条件 无限的递归导致的堆栈溢出
1