Golang : Ackermann function example
Not really a tutorial, but just want to play with recursive function and toying with Ackermann function. Hope this example can be useful to you.
See http://en.wikipedia.org/wiki/Ackermann_function
package main
import (
"fmt"
"strconv"
"os"
)
func Ackermann(n, m int64) int64 {
// http://en.wikipedia.org/wiki/Ackermann_function
for n != 0 {
if m == 0 {
m = 1
} else {
m = Ackermann(n, m-1) // recursive
}
n = n - 1
}
return m + 1
}
func main() {
if len(os.Args) < 3 {
fmt.Println("[usage] : ackermann integer integer")
os.Exit(0)
}
// convert input (type string) to integer
first, err := strconv.ParseInt(os.Args[1], 10, 0)
if err != nil {
fmt.Println("First input parameter must be integer")
os.Exit(1)
}
second, err := strconv.ParseInt(os.Args[2], 10, 0)
if err != nil {
fmt.Println("Second input parameter must be integer")
os.Exit(1)
}
answer := Ackermann(first, second)
fmt.Println(answer)
}
Sample output :
./ackermnn 3
[usage] : ackermann integer integer
./ackermnn 3 2
29
References :
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+11.6k Golang : Fuzzy string search or approximate string matching example
+7.6k Golang : Dealing with struct's private part
+31.2k Golang : Calculate percentage change of two values
+11k Golang : Replace a parameter's value inside a configuration file example
+17.1k Golang : XML to JSON example
+13.8k Golang : Check if an integer is negative or positive
+13.8k Golang : Image to ASCII art example
+29.7k Golang : Record voice(audio) from microphone to .WAV file
+18k Golang : Get all upper case or lower case characters from string example
+9.1k Golang : Handle sub domain with Gin
+10.7k Golang : Resolve domain name to IP4 and IP6 addresses.
+14.2k Elastic Search : Mapping date format and sort by date