package main

import "fmt"

func sum_iter(nums []int) int {
    result := 0
    for _, v := range nums {
        result += v
    }
    return result
}

func sum_naive_rec(nums []int) int {
    if len(nums) == 0 {
        return 0
    }
    head, tail := nums[0], nums[1:]
    return head + sum_naive_rec(tail)
}

func sum_tail_rec(nums []int, acc int) int {
    if len(nums) == 0 {
        return acc
    }
    head, tail := nums[0], nums[1:]
    return sum_tail_rec(tail, acc + head)
}

func main() {
    nums := []int{1,2,3,4,5}
    fmt.Println(sum_iter(nums))
    fmt.Println(sum_naive_rec(nums))
    fmt.Println(sum_tail_rec(nums, 0))
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: