# Go 語言遞歸函數
遞歸,就是在運行的過程中調用自己。
語法格式如下:
```
func recursion() {
recursion() /* 函數調用自身 */
}
func main() {
recursion()
}
```
Go 語言支持遞歸。但我們在使用遞歸時,開發者需要設置退出條件,否則遞歸將陷入無限循環中。
遞歸函數對于解決數學上的問題是非常有用的,就像計算階乘,生成斐波那契數列等。
## 階乘
以下實例通過 Go 語言的遞歸函數實例階乘:
```
package main
import "fmt"
func Factorial(x int) (result int) {
if x == 0 {
result = 1;
} else {
result = x * Factorial(x - 1);
}
return;
}
func main() {
var i int = 15
fmt.Printf("%d 的階乘是 %d\n", i, Factorial(i))
}
```
以上實例執行輸出結果為:
```
15 的階乘是 1307674368000
```
## 斐波那契數列
以下實例通過 Go 語言的遞歸函數實現斐波那契數列:
```
package main
import "fmt"
func fibonaci(n int) int {
if n < 2 {
return n
}
return fibonaci(n-2) + fibonaci(n-1)
}
func main() {
var i int
for i = 0; i < 10; i++ {
fmt.Printf("%d\t", fibonaci(i))
}
}
```
以上實例執行輸出結果為:
```
0 1 1 2 3 5 8 13 21 34
```
- Go 語言簡介
- Go 語言環境安裝
- Go 語言結構
- Go 語言基礎語法
- Go 語言數據類型
- Go 語言變量
- Go 語言常量
- Go 語言運算符
- Go 語言條件語句
- Go 語言 if 語句
- Go 語言 if...else 語句
- Go 語言 if 語句嵌套
- Go 語言 switch 語句
- Go 語言 select 語句
- Go 語言循環語句
- Go 語言 for 循環
- Go 語言循環嵌套
- Go 語言 break 語句
- Go 語言 continue 語句
- Go 語言 goto 語句
- Go 語言函數
- Go 語言函數值傳遞值
- Go 語言函數引用傳遞值
- Go 語言函數作為值
- Go 語言函數閉包
- Go 語言函數方法
- Go 語言變量作用域
- Go 語言數組
- Go 語言多維數組
- Go 語言向函數傳遞數組
- Go 語言指針
- Go 語言指針數組
- Go 語言指向指針的指針
- Go 語言指針作為函數參數
- Go 語言結構體
- Go 語言切片(Slice)
- Go 語言范圍(Range)
- Go 語言Map(集合)
- Go 語言遞歸函數
- Go 語言類型轉換
- Go 語言接口
- Go 錯誤處理
- Go 語言開發工具