recursions

This commit is contained in:
2024-10-23 16:28:28 +00:00
parent a8148f2400
commit f2240b1c38
5 changed files with 118 additions and 0 deletions

3
anon-functions/go.mod Normal file
View File

@@ -0,0 +1,3 @@
module example.com/anon-functions
go 1.23.1

38
anon-functions/main.go Normal file
View File

@@ -0,0 +1,38 @@
package main
import "fmt"
func main() {
numbers := []int{1, 2, 3}
double := createTransformer(2)
triple := createTransformer(3)
transformed := transformNumbers(&numbers, func (number int) int {
return number * 2
})
doubled := transformNumbers(&numbers, double)
tripled := transformNumbers(&numbers, triple)
fmt.Println(transformed)
fmt.Println(doubled)
fmt.Println(tripled)
}
func transformNumbers(numbers *[]int, transform func(int) int) []int {
dNumbers := []int{}
for _, val := range *numbers {
dNumbers = append(dNumbers, transform(val))
}
return dNumbers
}
func createTransformer(factor int) func(int) int {
return func(number int) int {
return number * factor
}
}

50
functions/main.go Normal file
View File

@@ -0,0 +1,50 @@
package main
import "fmt"
type transformFn func(int) int
func main() {
numbers := []int{1, 2, 3, 4}
moreNumbers := []int{5, 1, 2}
doubled := transformNumbers(&numbers, double)
tripled := transformNumbers(&numbers, triple)
fmt.Println(doubled)
fmt.Println(tripled)
transformerFn1 := getTransformerFunction(&numbers)
transformerFn2 := getTransformerFunction(&moreNumbers)
transformedNumbers := transformNumbers(&numbers, transformerFn1)
moreTransformedNumbers := transformNumbers(&moreNumbers, transformerFn2)
fmt.Println(transformedNumbers)
fmt.Println(moreTransformedNumbers)
}
func transformNumbers(numbers *[]int, transform transformFn) []int {
dNumbers := []int{}
for _, val := range *numbers {
dNumbers = append(dNumbers, transform(val))
}
return dNumbers
}
func getTransformerFunction(numbers *[]int) transformFn {
if (*numbers)[0] == 1 {
return double
} else {
return triple
}
}
func double(number int) int {
return number * 2
}
func triple(number int) int {
return number * 3
}

3
recursions/go.mod Normal file
View File

@@ -0,0 +1,3 @@
module example.com/recursions
go 1.23.1

24
recursions/main.go Normal file
View File

@@ -0,0 +1,24 @@
package main
import "fmt"
func main() {
fact := factorial(5)
fmt.Println(fact)
}
func factorial(number int) int {
if number == 0 {
return 1
}
return number * factorial(number - 1)
// result := 1
// for i := 1; i <= number; i++ {
// result = result * 1
// }
// return result
}