3 回答

TA貢獻1865條經驗 獲得超7個贊
遞歸的經驗法則是終止條件。它應該存在,并且應該存在于正確的位置。
func sumOfSquares(strArray []string, iterate int) int{
if iterate >= len(strArray) {
return sum_of_squares
}
number, _ := strconv.Atoi(strArray[iterate]) //TODO: handle err here
sum_of_squares += number*number
return sumOfSquares(strArray, iterate+1)
}
僅供參考:規(guī)范遞歸不應將其狀態(tài)保存到全局字段中。我建議使用以下函數簽名。
func sumOfSquares(strArray []string, iterate, currentSum int) int{
//...
return sumOfSquares(strArray, iterate+1, sum_of_squares)
}
這樣您就不需要存儲sum_of_squares在某個地方。您只需將它傳遞給下一個函數調用。

TA貢獻1853條經驗 獲得超6個贊
package main
import (
"fmt"
"strconv"
"strings"
)
var n int
func sumOfSquares(strArray []string, iterate int) int {
number, _ := strconv.Atoi(strArray[iterate])
if iterate == n {
return number * number
}
return ((number * number) + sumOfSquares(strArray, iterate+1))
}
func main() {
str := "1 2 3 4"
strArray := strings.Fields(str)
n = len(strArray) - 1
result := sumOfSquares(strArray, 0)
fmt.Println(result)
}
索引從 0 開始,因此長度減一。
正如@peterSO 指出的那樣,如果字符串包含不尋常的字符,它就不起作用,我沒有發(fā)布獲取輸入的正確答案,因為你似乎是初學者,但你可以閱讀輸入,而不是像這樣。
var inp []byte
var loc int
inp, _ = ioutil.ReadFile(fileName)
//add \n so that we don't end up running out of bounds,
//if last byte is integer.
inp = append(inp, '\n')
func scanInt() (res int) {
if loc < len(inp) {
for ; inp[loc] < 48 || inp[loc] > 57; loc++ {
}
for ; inp[loc] > 47 && inp[loc] < 58; loc++ {
res = res<<3 + res<<1 + (int(inp[loc]) - 48)
}
}
return
}
這更快并且只掃描整數,并跳過所有其他不尋常的字符。

TA貢獻1818條經驗 獲得超7個贊
我喜歡保持簡單。我也有一些 if 條件,但希望你喜歡它。
func sumOfSquares(numArr []string) int {
? ? i, err := strconv.Atoi(numArr[0])
? ? rest := numArr[1:]
? ? //Error checking
? ? if err != nil {
? ? ? ? fmt.Println(err)
? ? ? ? os.Exit(1)
? ? ? ? return 0
? ? }
? ? square := i * i
? ? // negative & last number
? ? if i < 0 && len(rest) == 0 {
? ? ? ? return square
? ? }
? ? // negative & not last number
? ? if i < 0 && len(rest) > 0 {
? ? ? ? return sumOfSquares(rest)
? ? }
? ? // last man standing
? ? if i >= 0 && len(rest) == 0 {
? ? ? ? return square
? ? }
? ? return square + sumOfSquares(rest)
}
- 3 回答
- 0 關注
- 169 瀏覽
添加回答
舉報