在 Go 中,使用递归扫描一行中的数字
In Go, scan numbers from a line using recursion
我想从标准输入扫描一行整数到一个整数片段。每个整数由空格分隔。 Ther 将有多达 N 个整数的用户输入。我尽量不使用 for 循环。例如,
1 15 16 17
到目前为止,这是我执行任务的函数,
var array []int
func read(b int) {
if b == 0 {
return
}
fmt.Scanf("%d", &array)
read(b - 1)
}
想法是从输入中读取 1 15 16 17,并将其制成值为 [1 15 16 17]
的切片
编译后报错,
Runtime error
例如,
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)
}
输入:
1 15 16 17<Enter>
输出:
[1 15 16 17]
不是递归的,只是读取整数,直到关闭标准输入或读取无法转换为整数的内容。
package main
import "fmt"
func main() {
var array []int
var i int
for {
_, err := fmt.Scan(&i)
if err != nil {
break
}
array = append(array, i)
fmt.Println("read number", i, "from stdin, array ", array)
}
}
我想从标准输入扫描一行整数到一个整数片段。每个整数由空格分隔。 Ther 将有多达 N 个整数的用户输入。我尽量不使用 for 循环。例如,
1 15 16 17
到目前为止,这是我执行任务的函数,
var array []int
func read(b int) {
if b == 0 {
return
}
fmt.Scanf("%d", &array)
read(b - 1)
}
想法是从输入中读取 1 15 16 17,并将其制成值为 [1 15 16 17]
的切片编译后报错,
Runtime error
例如,
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)
}
输入:
1 15 16 17<Enter>
输出:
[1 15 16 17]
不是递归的,只是读取整数,直到关闭标准输入或读取无法转换为整数的内容。
package main
import "fmt"
func main() {
var array []int
var i int
for {
_, err := fmt.Scan(&i)
if err != nil {
break
}
array = append(array, i)
fmt.Println("read number", i, "from stdin, array ", array)
}
}