第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

函數(shù)在返回語句時(shí)不退出

函數(shù)在返回語句時(shí)不退出

Go
躍然一笑 2023-05-15 14:44:07
我有一個(gè)奇怪的問題。我在玩圍棋時(shí)發(fā)現(xiàn)了一些我無法理解的非常奇怪的行為。當(dāng)我運(yùn)行該findMatchingSum函數(shù)時(shí),它會(huì)搜索預(yù)期的總和,如果總和更大,我將最后一個(gè)索引減 1,如果更大,則將第一個(gè)索引增加一個(gè)。但是,當(dāng)我調(diào)試代碼時(shí),它首先遇到 if 語句并且應(yīng)該返回 true,但是它直接運(yùn)行并運(yùn)行最后一個(gè) else if 語句?;靵y從這里開始。在第 3 次迭代中,它命中了進(jìn)入該塊的 if 語句,但沒有退出該函數(shù)。這是代碼;package mainimport "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}
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊

你忘了從 else-if 分支“返回”。這應(yīng)該有效:


func findMatchingSum(arr []int, sum , last, first int ) bool {

    if arr[first] + arr[last] == sum {

        return true

    } else if  arr[first] + arr[last] > sum {

        return findMatchingSum(arr, sum, last - 1, first)

    } else if arr[first] + arr[last] < sum {

        return findMatchingSum(arr, sum, last, first + 1)

    }

    return false

}

如果不這樣做,第三個(gè)分支將被執(zhí)行,但函數(shù)不會(huì)退出——它會(huì)跳轉(zhuǎn)到下一條指令,即“return false”。


查看完整回答
反對(duì) 回復(fù) 2023-05-15
  • 1 回答
  • 0 關(guān)注
  • 147 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)