请教一个递归动态数组变量的问题

r11222 2010-03-18 10:20:13
void rec(int M,int N)
{
int *a=(int *)malloc(M*N);
memset(a,0,M*N);
rec(M,N);
}


void main()
{
rec(9,9);
}
现在我想 在所有递归函数rec中使用同一个a数组,而且 在第一次调用rec的时候把数组全部初始化为0(除了第一次调用rec时,其他调用都不初始化为0)
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobo364 2010-03-18
  • 打赏
  • 举报
回复
没丢吧,递归是用栈的,在栈里
owner736 2010-03-18
  • 打赏
  • 举报
回复
你a申请的内存怎么办,岂不丢了
we_sky2008 2010-03-18
  • 打赏
  • 举报
回复

void rec(int M,int N)
{
static int i = 0;
static int *a=(int *)malloc(M*N);

if (i == 0)
memset(a,0,M*N);
i = 1;
rec(M,N);
}
r11222 2010-03-18
  • 打赏
  • 举报
回复
有什么好的方法?
mstlq 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 flyyyri 的回复:]
楼上的递归如何终止下去?
[/Quote]
这个是不会终止的……
因为按楼主原来的代码,递归也是不会终止的……
本帖只解决那个动态数组的问题^_^

flyyyri 2010-03-18
  • 打赏
  • 举报
回复
楼上的递归如何终止下去?
mstlq 2010-03-18
  • 打赏
  • 举报
回复
void rec(int M,int N,int first)
{
static int *a;
if (first==0)
{
a=(int *)malloc(M*N);
memset(a,0,M*N);
}
rec(M,N,1);

if(first==0)
free(a);
}


void main()
{
rec(9,9,0);
}
r11222 2010-03-18
  • 打赏
  • 举报
回复
顶一次~~~~~~~~~~~~~~~~~~~~~~~~~~
求解答

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧