关于网友提出的“ 一个函数递归调用的问题,看不懂了~”问题疑问,本网通过在网上对“ 一个函数递归调用的问题,看不懂了~”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 一个函数递归调用的问题,看不懂了~
描述:本帖最后由 bob_vocalno 于 2010-08-16 17:11:11 编辑
源代码如下:
// 程序清单7.16ruler.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
const int Len=66;
const int Divs=6;
void subdivide(char ar[],int low,int high,int level);
int _tmain(int argc, _TCHAR* argv[])
{
char ruler[Len];
int i;
for (i=1;i<>
{
ruler[i]=' ';
}
ruler[Len-1]='\0';
int max=Len-2;
int min=0;
ruler[min]=ruler[max]='|';
std::cout<<><>
for (i=1;i<=Divs;i++)
{
subdivide(ruler,min,max,i);
std::cout<<><>
for (int j=1;j<>
{
ruler[j]=' ';
}
}
system("pause");
return 0;
}
void subdivide(char ar[],int low,int high,int level)
{
if (level==0)
{
return;
}
int mid=(high+low)/2;
ar[mid]='|';
subdivide(ar,low,mid,level-1);
subdivide(ar,mid,high,level-1);
}
请问第二个for循环到底是调用后中间出现‘|’,之后输出ruler难道‘|’不消失嘛?后面的循环又是怎么回事搞不明白啊
解决方案1: for (int j=1;j<>
{
ruler[j]=' ';
}
第一个和第三个是清空除首尾的'|',
第二个是当len=66时,通过subdivide(ruler,min,max,6); 可遍历整个数据, 所以只要6次
subdivide(ar,low,mid,level-1);//向中间位置左边插入'|'
subdivide(ar,mid,high,level-1);//向中间位置右边插入'|'
这样可以保证输出的是相似对称的
以上介绍了“ 一个函数递归调用的问题,看不懂了~”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3794492.html