Function 按所需次数执行函数
计算给定整数的平方和,不包括任何负数。Function 按所需次数执行函数,function,go,iteration,standards,goto,Function,Go,Iteration,Standards,Goto,计算给定整数的平方和,不包括任何负数。 输入的第一行是一个整数N(1,这是一个使用递归的实现: package main import "fmt" func testCase(N int) { if N <= 0 { return } var X int fmt.Scanf("%d", &X) fmt.Println(sumOfSquare(X)) testCase(N-1) } func sumOfSquare
输入的第一行是一个整数N(1,这是一个使用递归的实现:
package main
import "fmt"
func testCase(N int) {
if N <= 0 {
return
}
var X int
fmt.Scanf("%d", &X)
fmt.Println(sumOfSquare(X))
testCase(N-1)
}
func sumOfSquare(X int) int {
if X == 0 {
return 0
}
var Y int
fmt.Scanf("%d", &Y)
if Y > 0 {
return Y*Y + sumOfSquare(X-1)
}
return sumOfSquare(X-1)
}
func main() {
var N int
fmt.Scanf("%d", &N)
testCase(N)
}
需求中不允许循环有什么原因吗?您所说的“无法执行”到底是什么意思?问题中有一些我必须遵循的指导原则,并且明确提到我不能使用for循环。如果你不能使用for循环,我建议使用递归而不是goto语句。这有什么具体原因吗?谢谢你的回答@chmike,但问题说有多个测试用例,程序不应该使用同时输入并产生相应的输出。
样本输入2 4 3-1 14 5 9 6-53 32 16样本输出206 1397
在上述样本输入中,2是程序必须获取元素数的测试用例数。4是元素数,然后取4个元素作为输入,对于第二个测试用例,5是n元素数。对于第一个输出,打印第一个测试用例的和,然后打印第二个测试用例的和printed@ShivamSrivastava我刚刚读了问题陈述。事实上,您可以使用goto,而不需要使用递归。代码中的问题是您没有在myfunc 。另一个问题是,测试用例值是用空格分隔的,最后不排除负值。另一个问题是,不需要构造切片。@ShivamSrivastava我重写了我的答案来回答问题语句。它使用递归调用,而不是goto。它产生预期的输出。
package main
import "fmt"
func testCase(N int) {
if N <= 0 {
return
}
var X int
fmt.Scanf("%d", &X)
fmt.Println(sumOfSquare(X))
testCase(N-1)
}
func sumOfSquare(X int) int {
if X == 0 {
return 0
}
var Y int
fmt.Scanf("%d", &Y)
if Y > 0 {
return Y*Y + sumOfSquare(X-1)
}
return sumOfSquare(X-1)
}
func main() {
var N int
fmt.Scanf("%d", &N)
testCase(N)
}
$ go run main.go
2 4 3 -1 1 14 5 9 6 -53 32 16
206
1397