您的位置:首页 > 编程语言 > C语言/C++

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: