weixin_41122979
2017-11-20 14:10
采纳率: 0%
浏览 871

这个代码为什么会提示堆栈溢出?

#include
#include
#include
using namespace std;
string f(string alin)
{
string blin;
if (sizeof(alin) == 1) return alin;
blin = alin.substr(0 , 1);
return f(alin.substr(1))+blin;

return 0;

}
int main()
{
string alin;
cin >> alin;
f(alin);
return 0;

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • blownewbee 2017-11-20 14:13

    sizeof(alin) == 1 永远不会满足
    用alin.size() == 1或者alin.length() == 1

    点赞 打赏 评论
  • 一枚榴莲 2017-11-21 00:53

    试一下
    //c++
    #include
    #include
    #include
    using namespace std;
    string f(string alin)
    {
    string blin;
    //计算字符串长度 .cstr()是获取alin的指针
    if (strlen(alin.c_str()) == 1) return alin;
    blin = alin.substr(0, 1);
    return f(alin.substr(1)) + blin;
    }
    int main()
    {
    string alin;
    cin >> alin;
    cout << f(alin);
    return 0;
    }

    点赞 打赏 评论

相关推荐 更多相似问题