【问题标题】:c: invert string using recursion?c:使用递归反转字符串?
【发布时间】:2015-09-27 21:24:44
【问题描述】:

这个函数有什么问题?

   void stringReverse (char stringa[])
    {
        if (stringa[0]!='\0')
        {
            return stringReverse(&stringa[1]);
            printf("%c", stringa[0]);
        }
    }

我必须编写一个使用递归反转字符串的函数(例如:“olleH”中的“Hello”);该函数必须接收一个字符串(仅此而已)并以相反的顺序打印字符......我不明白为什么我写的东西没有打印任何东西......

【问题讨论】:

  • 一个void 函数返回......好吧......什么都没有。
  • 看看那几行:printf() 会到达吗?
  • 请避免在标题中使用标签,即不要在标题中以“c:”作为c问题的前缀。

标签: c arrays string recursion char


【解决方案1】:

return 从函数返回一个值,并且在该范围内不再执行任何语句。考虑一下您希望该语句的位置...

没有完整回答,因为这听起来像是家庭作业!

【讨论】:

  • 这应该是一条评论
  • 我倾向于发表评论,但我也认为家庭作业答案需要不同的处理。最好让人们认为在这种情况下才被告知。
  • 谢谢,我很感激你没有解决我的问题,但你让我思考我犯的错误,那肯定更好!
【解决方案2】:

只是不要使用返回。 使用stringReverse(&stringa[1]); 代替 return stringReverse(&stringa[1]);

因为,'return' 语句用于返回一个值。但是你的函数是 void 类型,这意味着它什么也不返回,它不需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 2017-07-20
    • 2012-09-24
    • 2022-01-09
    • 1970-01-01
    • 2011-07-28
    相关资源
    最近更新 更多