Bootstrap

【算法】关于递归函数返回值的理解。

本次代码用最大子数组问题(可参考算法导论, 即寻找数组arr中和最大的非空连续子数组,时间复杂度为O(nlogn)


package main

func findmaxcrossarr(arr []int, low, high, mid int) (int, int, int) {
	leftsum, rightsum := 0, 0
	leftindex, rightindex, temp := 0, 0, 0
	for i := mid; i >= low; i-- {
		temp = temp + arr[i]
		if temp > leftsum {
			leftsum = temp
			leftindex = i
		}
	}
	temp = 0
	for i := mid + 1; i <= high; i++ {
		temp = temp + arr[i]
		if temp > rightsum {
			rightsum = temp
			rightindex = i
		}
	}
	return leftindex, rightindex, (leftsum + rightsum)
}

func findmaxsubarr(arr []int, low, high int) (int, int, int) {
	if low == high {
		return low, high, arr[low]
	} else {
		mid := int((low + high) / 2)
		leftlow, lefthigh, leftsum := findmaxsubarr(arr, low, mid)
		rightlow, righthigh, rightsum := 
;