gpt4 book ai didi

Swift 二进制搜索失败到最后一个 return 语句

转载 作者:可可西里 更新时间:2023-11-01 01:08:09 24 4
gpt4 key购买 nike

我正在尝试在 Swift 4 中实现二分查找。代码似乎可以工作,除了代码正在下降到最后一个 return 语句。我尝试将它放在 else 子句中,但收到编译器警告,指出控制到达非空的结尾。我想要它,所以如果满足条件,代码将提前返回并且不会以最后一个 return 语句的 -1 值退出。

let numbersArray:[Int] = [1, 2, 3, 4, 6, 6, 6, 7, 7, 8, 9, 11, 13, 15, 17, 19, 20]

var first: Int = 0
var last: Int = numbersArray.count - 1

func binarySearch(array: [Int], number: Int) -> Int{

if array.count == 0 {return -1}
else if array.count == 1{
if array[0] == number {return array[0]}

else {return -1}
}

let arrayMiddle: Int = array.count / 2

if number == array[arrayMiddle] {return array[arrayMiddle]}

else if number > array[arrayMiddle]{
first = arrayMiddle + 1
print("first in number > middle \(first)")
last = array.count - 1
print("last in number > middle \(last)")
let slice: [Int] = Array(array[first...last])
binarySearch(array: slice, number: number)


}
else if number < array[arrayMiddle]{
last = arrayMiddle - 1
print("last in number < middle \(last)")
first = 0
print("first in number < middle \(first)")
let slice: [Int] = Array(array[first...last])
binarySearch(array: slice, number: number)
}

print("got to last case")
return -1
}

最佳答案

您递归调用 binarySearch 两次而不返回结果。

关于Swift 二进制搜索失败到最后一个 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53075435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com