1. 程式人生 > >GoLang學習筆記(十五)遞迴函式,在函式內部呼叫自身

GoLang學習筆記(十五)遞迴函式,在函式內部呼叫自身

遞迴函式,如果一個函式在內部呼叫自身本身,就叫遞迴函式
注意遞迴函式必須滿足以下兩個條件:
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)
}

在學習這個章節時,一不小心就造成了棧溢位報錯,感覺還是迴圈比較好用。