递归方法和闭包
递归方法
计算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())
fmt.Println(fn1())
fmt.Println(fn1())
fmt.Println(fn1())
fmt.Println(fn2(10))
fmt.Println(fn2(10))
fmt.Println(fn2(10))
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-2600.html