这是我的二进制搜索函数的代码找到了用户想要查找的值,但它总是返回false idk为什么,我去除了它并且它在找到数字后返回true但是当递归函数执行循环返回时将return语句更改为未找到xx请帮帮我
public string BinarySearche(List<int> List2, int NumToFind)
{
List<int> List = List2;
if (List.Count>2)
{
int Length = List.Count / 2;
if (List[Length]==NumToFind)
{
return List[Length] + " Number found";
}
else if (List[Length]<NumToFind)
{
List2.RemoveRange(0, Length);
BinarySearche(List2, NumToFind);
}
else if (List[Length]>NumToFind)
{
List2.RemoveRange(Length, List2.Count - Length);
BinarySearche(List2, NumToFind);
}
return "Number not found";
}
else
{
if (List[0]==NumToFind)
{
return List[0] + " Number found";
}
else if(List[1] == NumToFind)
{
return List[1] + " Number found";
}
return "Number not found";
}
}
答案 0 :(得分:0)
你在两个地方递归调用BinarySearche(List2,NumToFind),所以代码将进入,查找值(根据需要多次),当它找到它时,返回是正确的吗?所以它会将结果返回给它的父节点,因为一旦你从BinarySearche(List2,NumToFind)回来后,这个结果就会丢失,所以没有任何结果,所以真的就会丢失。
尝试打电话 “返回BinarySearche(List2,NumToFind);”这样,当你找到你想要的任何东西时,它会返回true,回到父级,得到真实并返回它直到找到根