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
最後に a を追加し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 が返されます。
2 番目のケースでエラーが発生するのはなぜですか? 3 番目のケースでは、関数が最後の に到達しないにもかかわらず、return 1
正しい出力を計算するのはなぜですか?