#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