C++ Primer Plus 中第七章的递归函数,我终于看懂了。。。。
。。本人底子较差。。。好不容易看懂了这个函数。。。贴代码和注释上来,欢迎大家来指点指点。
#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);}