golang 学习(十九)递归方法和闭包

    技术2022-07-10  143

    递归方法和闭包

    递归方法

    计算1~100的和

    func fn2(n int) int { if n > 1 { return n + fn2(n-1) } else { return 1 } } sum := fn2(100) fmt.Println(sum)

    计算5的阶乘

    func fn3(n int) int { if n > 1 { return n * fn2(n-1) } else { return 1 } } factorial := fn2(5) fmt.Println(factorial )

    闭包

    全局变量特点:常驻内存 污染全局局部变量特点:不常驻内存,不污染全局闭包:可以让一个变量常驻内存,而不污染全局变量 func add1()func()int{ var i = 12 return func() int { return i+1 } } func add2()func(y int)int { var i = 12 return func(y int) int { i+=y return i } } func TestAdd(t *testing.T) { var fn1 = add1() var fn2 = add2() fmt.Println(fn1()) //13 fmt.Println(fn1()) //13 fmt.Println(fn1()) //13 fmt.Println(fn1()) //13 fmt.Println(fn2(10)) //22 fmt.Println(fn2(10)) //32 fmt.Println(fn2(10)) //42 }
    Processed: 0.012, SQL: 9