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

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

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

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

復制代碼 代碼如下:

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

func main() {
   recursion()
}


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

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

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

復制代碼 代碼如下:

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

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

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 遞歸判斷回文字符串
判斷回文字符串是個比較經典的問題。

思路就是拿第一個字符和最一個字符比較,如果不等退出,相同的話繼續(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)
        }  
    }  

}

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

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

巨人網絡通訊聲明:本文標題《深入解析Go語言編程中的遞歸使用》,本文關鍵詞  深入,解析,語言編程,中的,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入解析Go語言編程中的遞歸使用》相關的同類信息!
  • 本頁收集關于深入解析Go語言編程中的遞歸使用的相關信息資訊供網民參考!
  • 推薦文章