这是在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,它仍会计算正确的输出?
相关分类