class FoldPaper {
public:
    vector<string> foldPaper(int n) {
        // write code here
        vector<string> res;
        foldProcess(n, true, res); // 第一次的对折,形成的折现向下
        return res;
    }
    void foldProcess(int n, bool down, vector<string>& res){
    /*  n: 还要对折多少次
    	down: 这一次的线是否向下
        res: 用来存放结果的引用
    */
        if(n==0) return;
        
        foldProcess(n-1, true, res); // 上一次折痕上方的折痕一定向下
        res.push_back((down?"down":"up"));
        foldProcess(n-1, false, res); // 上一次折痕的下方的折痕一定向上
    }
};
    折纸问题的c++代码附带注释,思想是一样的,每次不断的求一条线的上面的上面的上面的...那条线,然后打印本条线,然后求出下边的那条线后返回给上一次的一条线,对大牛的代码做了修改,不使用额外的 i,n是剩余的还要对折的次数。这个题目用递归真是好舒服!!