предупреждение C4715: не все пути управления возвращают значение c ++ - не могу пройти тест - PullRequest
0 голосов
/ 01 августа 2020

У меня проблема с этим кодом:

Проблема в том, что я постоянно получаю предупреждение C4715, несмотря на то, что .exe работает правильно и дает правильный ответ на проблему, которую я пытаюсь решить. разрешить. Предупреждение делает невозможным выполнение задачи внутри приложения. Пожалуйста, дайте мне понять, почему слово return, которое я использовал в предложениях if, не работает.

#include <utility>
#include <iostream>


    std::pair<int, int> solve(int a, int b) {
    
        if (a == 0 || b == 0) {
            std::pair <int, int> kek(a, b);
            return kek;
    
        }
        else if (a >= 2 * b) {
            a = (a - (2 * b));
            solve(a, b);
        }
        else if (b >= 2 * a) {
            b = (b - (2 * a));
            solve(a, b);
        }
        else {
            std::pair <int, int> kek(a, b);
            return kek;
        }
        
    }
    
    int main() {
        bool result{ solve(22, 5) == std::make_pair(0,1) };
        std::cout << result;
        return 0;
    }

1 Ответ

5 голосов
/ 01 августа 2020

Ваша функция solve не будет выполнять оператор return, если a == 0 || b == 0 неверно и одно из a >= 2 * b или b >= 2 * a истинно.

Кажется, что два solve(a, b); в функции solve должно быть return solve(a, b);.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...