我正在尝试编写一个递归函数,但在该行出现错误:n + sum(n-1);
我的编译器是德语,因此错误消息的翻译很糟糕:“无效值未按预期被忽略”。感谢帮助!

void sum (int n)
{
    if(n==0)
    {
        cout << n << endl;
    }
    else if(n>0)
    {
        n + sum(n-1);
        cout << n << endl;
    }
}

int main()
{
   sum(3);
   return 0;
}

最佳答案

请注意,您已将函数定义为

void sum (int n);

该函数没有返回值。但是,在此代码中:
n + sum(n-1);

您正在尝试将n添加到sum(n - 1)的返回值中,这是不合法的,因为sum(n - 1)不会产生值。

要解决此问题,您可能需要更改函数,使其返回int。如果这样做,则需要进行其他更改,例如将return语句添加到函数中,但这应有助于使您走上正确的道路。

希望这可以帮助!

08-03 14:33