C++ Primer Plus 中第七章的递归函数,我终于看懂了。。。。
2012-07-22 23:55
281 查看
。。本人底子较差。。。好不容易看懂了这个函数。。。贴代码和注释上来,欢迎大家来指点指点。
#include <iostream> const int Len = 66; const int Divs = 6; void subdivide(char ar[], int low, int high, int level); int main() { char ruler[Len]; int i; for(i = 1;i < Len-2; i++) ruler[i] = ' '; // 初始化数组 ruler[Len - 1] = '\0'; int max = Len - 2; int min = 0; ruler[min] = ruler[max] = '|'; // 字符串的第一个和最后一个字符为 | std::cout << ruler << std::endl; // 输出的第一行 for (i = 1; i <= Divs; i++) { subdivide(ruler,min,max,i); std::cout << ruler << std::endl; for (int j = 1; j < Len - 2; j++) ruler[j] = ' '; //清空数组 } return 0; } void subdivide(char ar[], int low, int high, int level) { // 当循环的第一次进来后,由于LEVEL是1,所以把中间的设为 | 就跳出,第二次进来后,由于LEVEL是2,所以,中间的设为 | 之后,再进入这个函数,把起始点到中间点之间的中间的元素设为 | ,然后跳出第一个的调用,跳入第二个递归,将后半部分的中间元素设为 | 。依次类推,得到完整的图。 if(level == 0) return ; int mid = (high + low) / 2; ar[mid] = '|'; subdivide(ar, low ,mid ,level-1); subdivide(ar, mid ,high , level-1); }
相关文章推荐
- C++ Primer Plus学习:第七章 函数-C++的编程模块(2)
- 函数——c++的编程模块(c++primer plus 第七章)
- c++ primer plus 第七章《编程题7.13.7》
- C++ Primer Plus (第6版)编程练习 代码-----第七章
- C++ primer plus 第七章编程练习
- C++ Primer Plus学习:第七章 函数-C++的编程模块(3)
- 【学习C++】C++ Primer Plus (第六版)第七章编程练习6-10
- c++ primer plus 第七章《编程题7.13.8a》
- C++ primer plus(第六版)第七章练习题
- c++ primer plus 第五版 第七章 编程练习 第 8 题 (字符数组转成字符串,trim使用,判断空行)
- c++ primer plus 第七章《编程题7.13.8b》
- C++ Primer Plus第六版 第七章 编程练习答案
- C++ Primer Plus第五版 第七章 编程练习答案
- C++ Primer Plus 第六版(中文版)课后编程题----第七章
- C++ Primer Plus(第七章 函数—C++的编程模块)内容精要
- c++ primer plus 第七章《编程题7.13.10》
- C++ Primer Plus 第五版 第七章复习题
- 2012/1/19 《C++ Primer Plus》第七章:函数——C++编程模块 学习笔记
- c++ primer plus 第七章-编程题7.13.5《求任意一个数的阶乘》
- 这是我关于c++primer plus第七章编程练习第十题的解答