Найдите число, при котором пути двух чисел в двоичном дереве перекрываются

#binary-tree

#двоичное дерево

Вопрос:

 #include<iostream>

using namespace std;
int binTree(int n, int m){
    if(n == m)
        return m;
    else if(n < m)
        return binTree(n, m/2);
    else if(n > m)
        return binTree(n/2, m);
}


int main(){
    int n,m;
    cin >> n >> m;
    cout << binTree(n, m);
}

 

Однако компилятор сообщает мне, что «функция Non-void не возвращает значение во всех путях управления» в моей функции BinTree… Я не понимаю, как?

Ответ №1:

Логически я понимаю вашу точку зрения. Компилятор, вероятно, определяет, что вы не закрываетесь с помощью значения по умолчанию else , рассмотрите возможность удаления начального условия и разрешения его разрешения в качестве вашего состояния по умолчанию.

 if (n < m)
    return binTree(n, m/2);
else if (n > m)
    return binTree(n/2, m);
return m