Wikipedia: Recursion
Tengo supports recursive functions. Because functions are values assigned to variables, the function body references its own variable name, and the closure captures the current binding.
fmt := import("fmt")
fact := func(n) {
if n == 0 { return 1 }
return n * fact(n-1)
}
fmt.println(fact(6))
fib := func(n) {
if n <= 1 { return n }
return fib(n-1) + fib(n-2)
}
fmt.println(fib(10))
sum := func(arr) {
if len(arr) == 0 { return 0 }
return arr[0] + sum(arr[1:])
}
fmt.println(sum([1, 2, 3, 4, 5]))
try it
720 55 15