C语言 这个C语言程序运行行452AB为什么结果是no?

atmystate用的是递归方式实现我用非递歸实现如下:

 
那个递归的能输出那么多吗,我只算出了a,ab,abc,abcd
 可以输出那么多。你能算出a,ab,abc,abcd
这个abcd输出的那层情形是这样的:buf中已经是abc,m已经偏迻到d而n为3,所以buf[3]=*mbuf[3]就为d了,所以这层输出abcd 然后m++之后,while循环判断m已经为空,跳出到上一层栈现在来分析上一层栈的情况:
buf中已经为abcd了,n此时为2(因为递归调用下一层时n+1才为3所以跳回上一层n还是2),而m此时为dwhile循环条件为真,buf[n]=*m即为buf[2]='d',buf[n+1]=0,所以buf变为了abd,输出abd然后,m++后while条件为假又跳到上一层,此时m还为cd, 而buf为abdn为1,buf[1]=*mbuf[2]=0,所以buf变为了ac,输出ac依此类推
}

我要回帖

更多关于 C语言程序运行 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信