2015-11-11 5 views
-5
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), и проблема у меня есть, «Отскок: не все пути управления возвращает значение », Я не знаю, как это исправить, очевидно, мне нужно вернуть 0; или что-то где-то в функции, но я не могу узнать, где, не разрушая, как это работает.
Пример: отскок (5) ==> распечатывает 5 4 3 2 1 0 1 2 3 4 5
TL DR: Где разместить возврат в отскоке, чтобы он работал правильно.C++ // Не все пути управлений возвращают значение

+1

Рассмотрите случай n <0 – Chuu

+2

Где вы возвращаете стоимость? –

+0

^... и 'void' тип возврата. –

ответ

7

На самом деле ни один из ваших путей управления не возвращает значение. Поскольку вы используете функцию только для печати на экране, ей ничего не нужно возвращать. Просто сделайте возвратного типа пустоты:

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

А потом DonT cout в результате вызова функции (как только вы сделаете это void функция не возвратит ничего абы), то есть вместо того, чтобы:

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

просто напишите

bounce(x); 

Вы уже печатаете на экране внутри функции.

2

Когда вы определяете функцию в C++, вы указываете тип возвращаемого значения перед именем функции.

Функция int bounce() объявляется как возвращающая целое число, но она не возвращает никаких значений вообще. Следовательно, это вызывает ошибку.

Вы можете объявить свою функцию с помощью void bounce(), которая сообщает компилятору, что ваша функция не вернет никаких значений. Это устранит ошибку.

Примечание. Хотя вы используете cout, чтобы отображать ваши значения, это отличается от возвращаемого значения в способе, о котором мы говорим. Возвращаемые значения указываются с использованием ключевого слова return.

Смежные вопросы