用C语言编程序输出a,b,ab,c,d,ac,bc,abc,d,ad,bd,cd,abd,acd,bcd,abcd,给出字符串"abcd"
atmystate用的是递归方式实现,我用非递归实现如下:
那个递归的能输出那么多吗,,我只算出了a,ab,abc,abcd
追答可以输出那么多。你能算出a,ab,abc,abcd。
这个abcd输出的那层情形是这样的:buf中已经是abc,m已经偏移到d,而n为3,所以buf[3]=*m,buf[3]就为d了,所以这层输出abcd。 然后m++之后,while循环判断m已经为空,跳出到上一层栈。现在来分析上一层栈的情况:
buf中已经为abcd了,n此时为2(因为递归调用下一层时n+1才为3,所以跳回上一层n还是2),而m此时为d,while循环条件为真,buf[n]=*m即为buf[2]='d',buf[n+1]=0,所以buf变为了abd,输出abd,然后,m++后while条件为假,又跳到上一层,此时m还为cd, 而buf为abd,n为1,buf[1]=*m,buf[2]=0,所以buf变为了ac,输出ac,依此类推
可是我用vc++运行不出来,,为什么有错误呀
这个只能输出a,ab,abc,abcd吧?
不知道那是什么东东,,