我有一个奇怪的问题。我在玩围棋时发现了一些我无法理解的非常奇怪的行为。
当我运行该findMatchingSum函数时,它会搜索预期的总和,如果总和更大,我将最后一个索引减 1,如果更大,则将第一个索引增加一个。
但是,当我调试代码时,它首先遇到 if 语句并且应该返回 true,但是它直接运行并运行最后一个 else if 语句。
混乱从这里开始。在第 3 次迭代中,它命中了进入该块的 if 语句,但没有退出该函数。
这是代码;
package main
import "fmt"
var arr = []int{1,2,4,4}
func main() {
s := findMatchingSum(arr, 8, len(arr) - 1, 0)
fmt.Println(s)
}
func findMatchingSum(arr []int, sum , last, first int ) bool {
if arr[first] + arr[last] == sum {
return true
} else if arr[first] + arr[last] > sum {
findMatchingSum(arr, sum, last - 1, first)
} else if arr[first] + arr[last] < sum {
findMatchingSum(arr, sum, last, first + 1)
}
return false
}
泛舟湖上清波郎朗
相关分类