Go语言无循环用递归扫描输入计算多组数字和问题求助
问题修复方案
你的代码存在3个核心错误导致无法正常运行:
fmt.Scan要求传入变量指针才能将读取到的输入写入变量,你所有fmt.Scan调用都直接传了变量值,输入完全没有写入对应变量print_sum递归计算得到的总和没有正确向上传递,最后固定返回0,计算结果直接丢失- 调用
print_sum后没有接收返回值打印,就算计算正确也无法输出结果
修复后代码
package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) recur(n) } func print_sum(l int, sum int) int { if l == 0 { return sum } var next_digit int fmt.Scan(&next_digit) // 直接返回下一层递归的计算结果,不要丢弃 return print_sum(l-1, sum+next_digit) } func recur(queries int) { if queries == 0 { return } var next_len int fmt.Scan(&next_len) // 接收计算结果并打印 sum := print_sum(next_len, 0) fmt.Println(sum) recur(queries - 1) }
核心修改点
- 所有
fmt.Scan的参数都添加了取地址符&,确保输入可以正常写入对应变量 - 移除了
print_sum末尾无意义的return 0逻辑,改为直接返回递归调用的结果,保证总和可以层层传递回到调用处 - 在
recur函数中接收print_sum返回的每组和,调用fmt.Println输出结果
内容的提问来源于stack exchange,提问作者Allen Ye
相关产品推荐
相关产品推荐

