C ++ //并非所有控制路径都返回一个值

时间:2015-11-11 22:40:34

标签: c++

int bounce(int n) {
    if (n == 0)
    {
        cout << "0" << endl;
    }
    if (n > 0)
    {
        cout << n << endl;
        bounce(n - 1);
        cout << n << endl;
    }
}

int main() 
{
    int x;
    cout << "Choose a number: ";
    cin >> x;
    cout << bounce(x) << endl;
    system("pause");
    return 0;
}

我最近第一次用C ++开始(2小时前左右:D),我遇到的问题是“Bounce:并非所有控制路径都返回值”,我不知道如何解决这个问题,显然我需要返回0;或功能中的某个地方,但我不知道它在哪里,而不会破坏它的工作原理 示例:bounce(5)==&gt;打印出5 4 3 2 1 0 1 2 3 4 5
TL DR:将退回放置在哪里以使其正常工作。

2 个答案:

答案 0 :(得分:7)

实际上,您的控制路径都没有返回值。由于您只使用该功能在屏幕上打印某些内容,因此无需返回任何内容。只需返回类型为void:

void bounce(int n) {
    /*...*/
}

然后不要cout函数调用的结果(一旦你使它成为void函数不会以任何方式返回任何东西),即代替:

std::cout << bounce(x) << std::endl;

简单地写

bounce(x);

您已在功能内的屏幕上打印。

答案 1 :(得分:2)

在C ++中定义函数时,请在函数名前指定返回类型。

您的int bounce()函数被声明为返回一个整数但它根本不返回任何值。因此,这会导致错误。

您可以使用void bounce()声明您的函数,它告诉编译器您的函数不会返回任何值。这将消除错误。

注意:虽然您使用cout来显示您的值,但这与我们讨论的方式返回值不同。使用return关键字指定返回值。