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是剩余的还要对折的次数。这个题目用递归真是好舒服!!
点赞 1

相关推荐

xxxxOxo:该催就催,想要你的不会因为催就挂,催了就挂的是因为本来就要挂你
点赞 评论 收藏
分享
牛客网
牛客企业服务