☆Ackermann↑
package main
import "fmt"
func main() {
fmt.Printf("ack(3,9): %d \n",ack(3,9));
}
func ack(m, n int) int {
switch {
case m == 0: return n+1;
case n == 0: return ack(m-1, 1);
}
return ack(m-1, ack(m, n-1));
}
- default: return ack(m-1, ack(m, n-1)); と書くと「returnがない」と叱られる。