函式可以呼叫它自己,這裡是一個計算費伯納係數(factorial of a number)的方式:
func factorial(x uint) uint { if x == 0 { return 1 } return x * factorial(x-1) }
factorial 呼叫它自己,使得函式進行遞迴(recursive),為了更了解此函式的運作,我們剖析 factorial(2) 的運作步驟:
factorial
factorial(2)
x == 0 成立嗎?否,(x 為 2)
x == 0
x
找出 (2-1) 的費伯納係數
x == 0 成立嗎?否,(x 為 1)
找出 (1-1) 的費伯納係數
x == 0 成立嗎?是,傳回 1。
傳回 1 * 1
1 * 1
傳回 2 * 1
2 * 1
Closure 與遞迴是強大的程式設計技術,是所謂函式化程式設計(functional programming)的範例基礎。大多數的人會覺得函式化的程式設計比較難以理解,而覺得使用迴圈、if 陳述句、變數與簡易的函式會比較容易。
Last updated 3 years ago