递归函数,如果一个函数在内部调用自身本身,就叫递归函数
注意递归函数必须满足以下两个条件:
1、在每一次调用自己时,必须是更接近于解
2、必须要有一个终止处理或计算的准则。
递归函数的优点是定义简单,逻辑清晰。理论上说有递归函数都能用循环的方式实现,但循环不如递归清晰。
使用递归函数需要注意防止栈溢出。递归调用的次数过多,会导致栈溢出。
首先是不用递归函数,求阶乘。
func factorial1(num int) (result int) {
result = 1
for i := 1; i <= num; i++ {
result *= i
}
return
}
使用递归函数,求阶乘
func factorial2(num int) int {
if num == 0 {
return 1
}
return num * factorial2(num-1)
}
在学习这个章节时,一不小心就造成了栈溢出报错,感觉还是循环比较好用。