我試圖構建一個代碼,當用戶輸入一個數字序列時,它將通過比較每個數字的序列,并且對于序列中的每個新的最大數字,它將把所有以前的數字相加
func main() {
var numeri []int
numeri = GetInputSlice()
fmt.Println(numeri)
var sum int
num := len(numeri)
for i := 0; i < num - 1 ; i {
sum = numeri[i]
if numeri[i] > numeri[i 1] || numeri[i] == num - 1 {
fmt.Println(sum)
sum = 0
}
}
}
完整代碼在這里:https ://go.dev/play/p/13ljQPmKaRA
如果我輸入這個數字序列 [1 2 13 0 7 8 9 -1 0 2] 我想得到 16、24 和 1。但在我的代碼中我只得到 16 和 24 而沒有得到最后一個 1 我可以想辦法解決這個問題。
uj5u.com熱心網友回復:
Onlynumeri[i]
被添加到sum
,并且您的回圈永遠不會訪問最后一項(i < num - 1
),那么如何才能添加最后一項呢?
遍歷整個切片,執行加法,但如果您不在最后一個元素,則僅與下一個元素進行比較。如果我們在最后一個,我們也想列印,所以我們可以使用單個條件
i == max || numeri[i] > numeri[i 1]
如果i == max
(短路評估)將不執行與下一個元素的比較。
例如:
max := len(numeri) - 1
for i, v := range numeri {
sum = v
if i == max || v > numeri[i 1] {
fmt.Println(sum)
sum = 0
}
}
這將輸出(在Go Playground上嘗試):
[1 2 13 0 7 8 9 -1 0 2]
16
24
1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487831.html