在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ GO/ Go語言遞歸
Go panic錯誤處理實例
Go命令行參數(shù)實例
Go可變參數(shù)的函數(shù)實例
Go通道同步實例
Go非阻塞通道操作實例
Go指針實例
Go數(shù)字解析實例
Go語言指針
Go超時(timeouts)實例
Go速率限制實例
Go信號實例
Go Base64編碼實例
Go計時器實例
Go命令行標志實例
Go原子計數(shù)器實例
Go語言切片
Go隨機數(shù)實例
Go語言類型轉(zhuǎn)換
Go排序?qū)嵗?/span>
Go時間格式化/解析實例
Go URL解析實例
Go字符串函數(shù)實例
Go語言常量
Go for循環(huán)語句實例
Go函數(shù)多個返回值實例
Go切片實例
Go行過濾器實例
Go語言接口
Go語言數(shù)組
Go語言變量
Go字符串格式化實例
Go斷續(xù)器實例
Go if/else語句實例
Go通道緩沖實例
Go錯誤實例
Go語言映射
Go執(zhí)行過程實例
Go函數(shù)實例
Go有狀態(tài)的goroutines實例
Go按自定義函數(shù)排序?qū)嵗?/span>
Go語言作用域規(guī)則
Go時代(Epoch)實例
Go變量實例
Go互斥體實例
Go語言范圍(range)
Go程序?qū)嵗?/span>
Go語言入門
Go通道路線實例
Go閉包(匿名函數(shù))實例
Go Select實例
Go通道范圍實例
Go集合函數(shù)實例
Hello World程序?qū)嵗?/span>
Go環(huán)境變量實例
Go語言運算符
Go讀取文件實例
Go延遲(defer)實例
Go SHA1哈希實例
Go語言條件和決策
Go語言錯誤處理
Go通道實例
Go指針實例
Go時間日期實例
Go語言字符串
Go語言循環(huán)
Go語言基礎語法
Go語言開發(fā)環(huán)境安裝配置
Go常量實例
Go語言結(jié)構(gòu)體
Go寫文件實例
Go正則表達式實例
Go JSON實例
Go語言教程
Go關(guān)閉通道實例
Go接口實例
Go語言遞歸
Go switch語句實例
Go函數(shù)遞歸實例
Go退出程序?qū)嵗?/span>
Go語言程序結(jié)構(gòu)
Go范圍實例
Go語言函數(shù)
Go工作池實例
Go語言數(shù)據(jù)類型

Go語言遞歸

遞歸是以自相似的方式重復項的過程。這同樣適用于其它編程語言,在編程語言中允許在函數(shù)內(nèi)調(diào)用同一個函數(shù)稱為遞歸調(diào)用,如下所示。

func recursion() {
   recursion() /* function calls itself */
}

func main() {
   recursion()
}

Go編程語言支持遞歸,即函數(shù)調(diào)用自身的函數(shù)。 但是在使用遞歸時,程序員需要注意在函數(shù)中定義或設置一個退出條件,否則它會進入無限循環(huán)。

遞歸函數(shù)非常有用,可用于解決許多數(shù)學問題,如計算數(shù)字的階乘,生成斐波那契數(shù)列等。

數(shù)字階乘示例

下面是一個例子,它使用遞歸函數(shù)來計算給定數(shù)字的階乘:

package main

import "fmt"

func factorial(i int)int {
   if(i <= 1) {
      return 1
   }
   return i * factorial(i - 1)
}

func main() { 
   var i int = 15
   fmt.Printf("Factorial of %d is %d", i, factorial(i))
}

當上述代碼編譯和執(zhí)行時,它產(chǎn)生以下結(jié)果:

Factorial of 15 is 2004310016

斐波那契系列示例

下面是另一個例子,它使用遞歸函數(shù)按給定數(shù)字生成斐波那契數(shù)列:

package main

import "fmt"

func fibonaci(i int) (ret int) {
   if i == 0 {
      return 0
   }

   if i == 1 {
      return 1
   }

   return fibonaci(i-1) + fibonaci(i-2)
}

func main() {
   var i int
   for i = 0; i < 10; i++ {
      fmt.Printf("%d ", fibonaci(i))
   }
}

當上述代碼編譯和執(zhí)行時,它產(chǎn)生以下結(jié)果:

0 1 1 2 3 5 8 13 21 34