Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 按所需次数执行函数_Function_Go_Iteration_Standards_Goto - Fatal编程技术网

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