找出二叉树中两个数的路径重叠的数

Find the number where the path of two numbers in a binary tree overlap

#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);
}

但是编译器告诉我在我的 binTree 函数中“非空函数不 return 所有控制路径中的值”...我不明白怎么回事?

从逻辑上讲,我理解你的意思。编译器可能会确定您没有使用默认状态关闭 else 考虑删除初始条件并允许将其解析为您的默认状态。

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