RosettaCodeData/Task/Ackermann_function/Go/ackermann_function-2.go
Ingy döt Net 80737d5a6a new tasks
2013-04-09 00:46:50 -07:00

15 lines
302 B
Go

func Ackermann2(m, n uint) uint {
switch {
case m == 0:
return n + 1
case m == 1:
return n + 2
case m == 2:
return 2*n + 3
case m == 3:
return 8 << n - 3
case n == 0:
return Ackermann2(m - 1, 1)
}
return Ackermann2(m - 1, Ackermann2(m, n - 1))
}