Quick actions

cmd+k|ctrl+k

Navigation

Languages

Factorial

Snippet info

Language

Go

Visibility

public

Author

riki.whyudi

Created

2023-02-14T05:16:44.60601Z

Updated

2023-02-14T10:10:04.413531Z

package main

import (
    "fmt"
)

// n * n-1
func factorial(n int) int {
    var total = 1

    for i := n; i >= 1; i-- {
        total *= i
    }
    
    return total
}

// 5 * 1 = 5 * 4 = 20 * 3 = 60 * 2 = 120 * 1 = 120 

func factorialRecursive(n int) int {
    
    if n < 1 {
        return 1
    }
    
    return n * factorialRecursive(n -1)
}


func factorialTailRecursive(total, value int) int {
    if value < 1 {
        return total
    }
    
    return factorialTailRecursive(total * value, value -1)
}


func main() {
   fmt.Println(factorial(7))
   fmt.Println(factorialRecursive(6))
   fmt.Println(factorialTailRecursive(1, 5))
}
INFO