婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 深入解析Go語言編程中的遞歸使用

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

熱門標簽:電銷機器人可以補救房產中介嗎 騰訊外呼系統價格 百度地圖標注搜索關鍵詞 電梯外呼訪客系統 最短的地圖標注 谷歌便利店地圖標注 ?兓? 成都呼叫中心外呼系統平臺 浙江人工智能外呼管理系統

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

復制代碼 代碼如下:

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

func main() {
   recursion()
}


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

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

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

復制代碼 代碼如下:

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))
}


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

Factorial of 15 is 2004310016

斐波那契系列
以下是另一個例子,其產生斐波串聯使用一個遞歸函數由給定一個數:
復制代碼 代碼如下:

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))
    }   
}


讓我們編譯和運行上面的程序,這將產生以下結果:

0 1 1 2 3 5 8 13 21 34

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

思路就是拿第一個字符和最一個字符比較,如果不等退出,相同的話繼續剛剛的過程,直到第一個字符和最后一個字符相遇或者他們的距離為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)
        }  
    }  

}

您可能感興趣的文章:
  • 使用go和python遞歸刪除.ds store文件的方法
  • Go遞歸修改文件名的實例代碼

標簽:邢臺 宜昌 盤錦 上海 雅安 眉山 七臺河 紹興

巨人網絡通訊聲明:本文標題《深入解析Go語言編程中的遞歸使用》,本文關鍵詞  深入,解析,語言編程,中的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入解析Go語言編程中的遞歸使用》相關的同類信息!
  • 本頁收集關于深入解析Go語言編程中的遞歸使用的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 体育| 响水县| 新兴县| 凭祥市| 北川| 达日县| 庐江县| 西乌珠穆沁旗| 天镇县| 庆安县| 曲沃县| 陆良县| 齐河县| 尚义县| 增城市| 海南省| 秭归县| 岗巴县| 句容市| 太原市| 涿鹿县| 呼图壁县| 通许县| 海兴县| 冀州市| 盐池县| 陇川县| 株洲县| 南靖县| 会泽县| 兴山县| 革吉县| 秦安县| 彭山县| 平乡县| 海盐县| 嵊州市| 通榆县| 红河县| 梧州市| 滨州市|