dsa4d4789789 2016-03-13 22:39
浏览 4
已采纳

在Go中,使用递归扫描一行中的数字

I want to scan a line of integers from stdin into a slice of integers. Each integer is separated by whitespace. Ther would be as many as N integers of user input. I'm trying not to use a for loop. For example,

1 15 16 17

So far, this is my function to perform the task,

var array []int

func read(b int) {
    if b == 0 {
        return
    }
    fmt.Scanf("%d", &array)
    read(b - 1)
}

The idea is to read from the input, 1 15 16 17, and make it into a slice with value [1 15 16 17]

After compiling, I got the error,

Runtime error
  • 写回答

2条回答 默认 最新

  • doukougua7873 2016-03-13 22:57
    关注

    For example,

    package main
    
    import "fmt"
    
    var a []int
    
    func read(b int) {
        if b == 0 {
            return
        }
        var i int
        _, err := fmt.Scanf("%d", &i)
        if err != nil {
            return
        }
        a = append(a, i)
        read(b - 1)
    }
    
    func main() {
        read(4)
        fmt.Println(a)
    }
    

    Input:

    1 15 16 17<Enter>
    

    Output:

    [1 15 16 17]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗