File tree 2 files changed +28
-0
lines changed
2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ import (
14
14
"github.com/symonk/learning-golang/ifelse"
15
15
"github.com/symonk/learning-golang/maps"
16
16
"github.com/symonk/learning-golang/ranges"
17
+ "github.com/symonk/learning-golang/recursion"
17
18
"github.com/symonk/learning-golang/slices"
18
19
"github.com/symonk/learning-golang/switches"
19
20
"github.com/symonk/learning-golang/tickers"
42
43
functions .Run ,
43
44
variables .Run ,
44
45
closures .Run ,
46
+ recursion .Run ,
45
47
}
46
48
)
47
49
Original file line number Diff line number Diff line change 1
1
package recursion
2
2
3
+ import "fmt"
4
+
5
+ /* Go supports `recursive function`, a function that internally calls itself.*/
3
6
func Run () {
7
+ fmt .Println (factorial (3 )) // 6
8
+ fibonacci := recursiveClosureFibonacci ()
9
+ fmt .Println (fibonacci (10 )) // 55
10
+ }
11
+
12
+ func factorial (n int ) int {
13
+ // Define the exit criteria to avoid infinite recursion.
14
+ if n == 1 {
15
+ return n
16
+ }
17
+ return n * factorial (n - 1 )
18
+ }
19
+
20
+ func recursiveClosureFibonacci () func (int ) int {
21
+ // Closures can also be recursive
4
22
23
+ var fib func (n int ) int
24
+ fib = func (n int ) int {
25
+ if n < 2 {
26
+ return n
27
+ }
28
+ return fib (n - 1 ) + fib (n - 2 )
29
+ }
30
+ return fib
5
31
}
You can’t perform that action at this time.
0 commit comments