C++ 如何使用递归打印文本背景词? char Text::torreverse(Text t1,int t)const { 如果(t1.bufferSize==1) 返回“”; if(t==(t1.bufferSize)-1) 返回“”; cout

C++ 如何使用递归打印文本背景词? char Text::torreverse(Text t1,int t)const { 如果(t1.bufferSize==1) 返回“”; if(t==(t1.bufferSize)-1) 返回“”; cout,c++,class,recursion,C++,Class,Recursion,如果您得到“访问冲突写入位置”,它不是由该函数引起的,因为它不会写入任何内存 它没有明显的错误,但这主要是因为向后读取数组的算法变得混乱 要以反向方式递归打印字符串,首先以反向方式打印“其余”字符,然后打印“此”字符更简单。 当你到达绳子的末端时停止 如果函数应该打印字符串,那么它为什么会返回一个char,这一点很不清楚,因此该函数不会: char Text::toReverse(Text t1, int t) const { if (t1.bufferSize == 1)

如果您得到“访问冲突写入位置”,它不是由该函数引起的,因为它不会写入任何内存

它没有明显的错误,但这主要是因为向后读取数组的算法变得混乱

要以反向方式递归打印字符串,首先以反向方式打印“其余”字符,然后打印“此”字符更简单。
当你到达绳子的末端时停止

如果函数应该打印字符串,那么它为什么会返回一个
char
,这一点很不清楚,因此该函数不会:

char Text::toReverse(Text t1, int t) const
{
    if (t1.bufferSize == 1)
        return ' ';
    if (t == (t1.bufferSize) - 1)
        return ' ';
    cout << t1.buffer[(t1.bufferSize) - 2 - t];
    return toReverse(t1, t + 1);
}
void Text::torreverse(Text t1,int t)const
{
if(t我可以建议您为bufferSize、bufferSize-2和bufferSize-2-t添加打印语句吗?请检查这些语句是否变为负数,或者超出字符串大小。我很确定“某些错误处理问题”有你需要的所有信息。停在那里,用你选择的调试器检查堆栈。我想这可能有用@Quentin这不是堆栈,我刚才说我一直在尝试调试它,但它不让我调试;它一直给我错误。@user889742这是个好主意!我会尝试的。
void Text::toReverse(Text t1, int t) const
{
    if (t < t1.bufferSize)
    {
        toReverse(t1, t + 1);
        cout << t1.buffer[t];
    }
}