You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)
}

核心修改点

  1. 所有fmt.Scan的参数都添加了取地址符&,确保输入可以正常写入对应变量
  2. 移除了print_sum末尾无意义的return 0逻辑,改为直接返回递归调用的结果,保证总和可以层层传递回到调用处
  3. 在recur函数中接收print_sum返回的每组和,调用fmt.Println输出结果

内容的提问来源于stack exchange,提问作者Allen Ye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:18:02