猿问

没有不可返回的return语句,Go代码不会编译

这是在Go中查找数字阶乘的程序:


func factorial(x uint) uint {

    if x == 0 {

        return 1

    }


    return x * (factorial(x - 1))

}

在输入5上调用时,此函数的输出为120。但是,如果添加一条else语句,则会出现错误。


func factorial(x uint) uint {

    if x == 0 {

        return 1

    } else {

        return x * (factorial(x - 1))

    }

}

错误 : function ends without a return statement


我return在末尾添加了一个:


func factorial(x uint) uint {

    if x == 0 {

        return 1

    } else {

        return x * (factorial(x - 1))

    }

    fmt.Println("this never executes")

    return 1

}

然后我得到了120的预期输出。


为什么第二种情况会导致错误?为什么在第三种情况下,即使函数从未到达最后一个函数return 1,它仍会计算正确的输出?


慕尼黑5688855
浏览 185回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答