提问【递归】【char】
c++吧
全部回复
仅看楼主
level 4
int sum(char c[])
{int num = 0;
if (c!='\0')
return num+sum(c+1);
elsereturn 0;}
int main()
{
char cstring[7] = "adasdq";
cout<<sum(cstring)<<endl;
return 0;
}
我在debug的时候发现cstring一直递归到'\0',但是if(c!='\0')依然满足条件继续递归,结果就是在adasdq接下去的非法字符串进行运算,然后就出错。
求问贴吧大神这错在那里。。。百思不得其解
2013年05月04日 19点05分 1
level 6
if(c[0].....)
2013年05月04日 23点05分 2
我试了一下。。结果是0。。哪里有错呢
2013年05月04日 23点05分
@全是坑爹货 把c改成c[0]
2013年05月05日 00点05分
return c[0]+sum(c+1)
2013年05月05日 00点05分
回复 b_team :谢谢大神!
2013年05月05日 02点05分
level 1
你这是要做什么运算,是a+d+a+s+d+q。。。??若是,那你的这个算法就是错的,改了c
[0]当然也是0
!!
2013年05月05日 00点05分 3
char的话不能直接转换成ASK码的int吗?楼上已经给出解答了,我没考虑到类型转换的问题,还是很感谢!
2013年05月05日 02点05分
level 11
把if (c!='\0')改成if (c
[0]!='\0')
2013年05月05日 00点05分 4
楼上已经给出诠释,但还是非常感谢!
2013年05月05日 02点05分
1