汉诺塔问题-递归

class Solution {
public:
    void hanota(vector& A, vector& B, vector& C) {
        if(A.size()<=0) return;
        int n=A.size();
        move(n,A,B,C);
        return;
    }
    void move(int n,vector& A, vector& B, vector& C){
        if(n==1){
            C.push_back(A.back());
            A.pop_back();
            return;
        }
        move(n-1,A,C,B);
        C.push_back(A.back());
        A.pop_back();
        move(n-1,B,A,C);
        return;
    }
};

递归,n个通过B移到C,先把n-1个通过C移到B,然后把A的最后一个放入C,再把n-1个从B通过A移到C。

你可能感兴趣的:(leetcode,递归法,c++)