最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析Go語言編程中的遞歸使用

 更新時間:2015年11月02日 14:25:55   投稿:goldensun  
這篇文章主要介紹了Go語言編程中的遞歸使用,是Go語言入門學習中的基礎知識,需要的朋友可以參考下

遞歸是以相似的方式重復項目的過程。同樣適用于編程語言中,如果一個程序可以讓你調(diào)用同一個函數(shù)被調(diào)用的函數(shù),遞歸調(diào)用函數(shù)內(nèi)使用如下。

復制代碼 代碼如下:

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

func main() {
   recursion()
}


Go編程語言支持遞歸,即要調(diào)用的函數(shù)本身。但是在使用遞歸時,程序員需要謹慎確定函數(shù)的退出條件,否則會造成無限循環(huán)。

遞歸函數(shù)是解決許多數(shù)學問題想計算一個數(shù)階乘非常有用的,產(chǎn)生斐波系列等

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

復制代碼 代碼如下:

package main

import "fmt"

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

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


讓我們編譯和運行上面的程序,這將產(chǎn)生以下結(jié)果:
復制代碼 代碼如下:

Factorial of 15 is 2004310016

斐波那契系列
以下是另一個例子,其產(chǎn)生斐波串聯(lián)使用一個遞歸函數(shù)由給定一個數(shù):
復制代碼 代碼如下:

package main

import "fmt"

func fibonaci(i 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\t%n", fibonaci(i))
    }   
}


讓我們編譯和運行上面的程序,這將產(chǎn)生以下結(jié)果:

0 1 1 2 3 5 8 13 21 34

golang 遞歸判斷回文字符串
判斷回文字符串是個比較經(jīng)典的問題。

思路就是拿第一個字符和最一個字符比較,如果不等退出,相同的話繼續(xù)剛剛的過程,直到第一個字符和最后一個字符相遇或者他們的距離為1時。說明他們是回文字符串。

下面的代碼會忽略空白字符 如"1   1  2 1"會讓為是回文字符串。

復制代碼 代碼如下:

package main

import (
    "fmt"
    "os"
    "strings"
    "unicode/utf8"
)

func doPalindrome(s string) bool {
    if utf8.RuneCountInString(s) <= 1 {
        return true
    }  

    word := strings.Trim(s, "\t \r\n\v")
    first, sizeOfFirst := utf8.DecodeRuneInString(word)
    last, sizeOfLast := utf8.DecodeLastRuneInString(word)

    if first != last {
        return false
    }  
    return doPalindrome(word[sizeOfFirst : len(word)-sizeOfLast])
}

func IsPalindrome(word string) bool {
    s := ""
    s = strings.Trim(word, "\t \r\n\v")
    if len(s) == 0 || len(s) == 1 {
        return false
    }  
    return doPalindrome(s)
}

func main() {
    args := os.Args[1:]
    for _, v := range args {
        ok := IsPalindrome(v)
        if ok {
            fmt.Printf("%s\n", v)
        }  
    }  

}

相關(guān)文章

  • Windows下CMD執(zhí)行Go出現(xiàn)中文亂碼的解決方法

    Windows下CMD執(zhí)行Go出現(xiàn)中文亂碼的解決方法

    本文主要介紹了Windows下CMD執(zhí)行Go出現(xiàn)中文亂碼的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 深入了解Go的HttpClient超時機制

    深入了解Go的HttpClient超時機制

    在寫?Go?的過程中經(jīng)常對比這Java和GO語言的特性,踩了不少坑,也發(fā)現(xiàn)了不少有意思的地方,今天就來聊聊?Go?自帶的?HttpClient?的超時機制
    2022-11-11
  • 詳解Go中Map類型和Slice類型的傳遞

    詳解Go中Map類型和Slice類型的傳遞

    這篇文章主要為大家詳細介紹了Go中Map類型和Slice類型的傳遞,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Go?Web編程添加服務器錯誤和訪問日志

    Go?Web編程添加服務器錯誤和訪問日志

    這篇文章主要為大家介紹了Go?Web編程添加服務器錯誤日志和訪問日志的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Golang?中的?條件變量(sync.Cond)詳解

    Golang?中的?條件變量(sync.Cond)詳解

    這篇文章主要介紹了Golang?中的?條件變量(sync.Cond)詳解的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Golang中使用Swagger生成API文檔的流程步驟

    Golang中使用Swagger生成API文檔的流程步驟

    Swagger 是一款強大的 API 文檔生成工具,可以幫助開發(fā)者輕松創(chuàng)建、管理和展示 RESTful API 文檔,在本文中,我們將介紹如何在 Golang 項目中使用 Swagger 來生成 API 文檔,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07
  • golang根據(jù)生日計算星座和屬相實例

    golang根據(jù)生日計算星座和屬相實例

    這篇文章主要為大家介紹了golang根據(jù)生日計算星座和屬相的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Golang實現(xiàn)http文件上傳小功能的案例

    Golang實現(xiàn)http文件上傳小功能的案例

    這篇文章主要介紹了Golang實現(xiàn)http文件上傳小功能的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Golang 實現(xiàn) Redis系列(六)如何實現(xiàn) pipeline 模式的 redis 客戶端

    Golang 實現(xiàn) Redis系列(六)如何實現(xiàn) pipeline 模式的 redis 客戶端

    pipeline 模式的 redis 客戶端需要有兩個后臺協(xié)程負責 tcp 通信,調(diào)用方通過 channel 向后臺協(xié)程發(fā)送指令,并阻塞等待直到收到響應,本文是使用 golang 實現(xiàn) redis 系列的第六篇, 將介紹如何實現(xiàn)一個 Pipeline 模式的 Redis 客戶端。
    2021-07-07
  • gorm FirstOrCreate和受影響的行數(shù)實例

    gorm FirstOrCreate和受影響的行數(shù)實例

    這篇文章主要介紹了gorm FirstOrCreate和受影響的行數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論

新余市| 安乡县| 浦江县| 鹤峰县| 永清县| 汶上县| 西安市| 鄢陵县| 福贡县| 翁牛特旗| 德阳市| 西乌| 盐源县| 深泽县| 丰原市| 鄄城县| 海安县| 墨脱县| 西充县| 沁源县| 攀枝花市| 湖州市| 任丘市| 公安县| 富蕴县| 炎陵县| 双鸭山市| 东阳市| 双辽市| 祥云县| 宣汉县| 策勒县| 庄浪县| 迁西县| 唐海县| 吴忠市| 龙胜| 财经| 临高县| 荔浦县| 铜鼓县|