国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Go】Go 語言教程--Go 語言遞歸函數(shù)(十七)

這篇具有很好參考價值的文章主要介紹了【Go】Go 語言教程--Go 語言遞歸函數(shù)(十七)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

往期回顧:

  • Go 語言教程–介紹(一)
  • Go 語言教程–語言結(jié)構(gòu)(二)
  • Go 語言教程–語言結(jié)構(gòu)(三)
  • Go 語言教程–數(shù)據(jù)類型(四)
  • Go 語言教程–語言變量(五)
  • Go 語言教程–GO語言常量(六)
  • Go 語言教程–GO語言運算符(七)
  • Go 語言教程–GO條件和循環(huán)語句(八)
  • Go 語言教程–GO語言函數(shù)(九)
  • Go 語言教程–GO語言變量作用域(十)
  • Go 語言教程–GO語言數(shù)組(十一)
  • Go 語言教程–GO語言指針(十二)
  • Go 語言教程–GO語言結(jié)構(gòu)體(十三)
  • Go 語言教程–GO語言切片(Slice)(十四)
  • Go 語言教程–Go 語言范圍(Range)(十五)
  • Go 語言教程–Go 語言Map(集合)(十六)

前言

遞歸,就是在運行的過程中調(diào)用自己。

語法格式如下:

func recursion() {
   recursion() /* 函數(shù)調(diào)用自身 */
}

func main() {
   recursion()
}

Go 語言支持遞歸。但我們在使用遞歸時,開發(fā)者需要設(shè)置退出條件,否則遞歸將陷入無限循環(huán)中。

遞歸函數(shù)對于解決數(shù)學(xué)上的問題是非常有用的,就像計算階乘,生成斐波那契數(shù)列等。

階乘

以下實例通過 Go 語言的遞歸函數(shù)實例階乘:

實例

package main

import "fmt"

func Factorial(n uint64)(result uint64) {
    if (n > 0) {
        result = n * Factorial(n-1)
        return result
    }
    return 1
}

func main() {  
    var i int = 15
    fmt.Printf("%d 的階乘是 %d\n", i, Factorial(uint64(i)))
}

以上實例執(zhí)行輸出結(jié)果為:

15 的階乘是 1307674368000

斐波那契數(shù)列

以下實例通過 Go 語言的遞歸函數(shù)實現(xiàn)斐波那契數(shù)列:

實例

package main

import "fmt"

func fibonacci(n int) int {
  if n < 2 {
   return n
  }
  return fibonacci(n-2) + fibonacci(n-1)
}

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

以上實例執(zhí)行輸出結(jié)果為:

0    1    1    2    3    5    8    13    21    34

求平方根

以下實例通過 Go 語言使用遞歸方法實現(xiàn)求平方根的代碼:

實例

package main

import (
        "fmt"
)

func sqrtRecursive(x, guess, prevGuess, epsilon float64) float64 {
        if diff := guess*guess - x; diff < epsilon && -diff < epsilon {
                return guess
        }

        newGuess := (guess + x/guess) / 2
        if newGuess == prevGuess {
                return guess
        }

        return sqrtRecursive(x, newGuess, guess, epsilon)
}

func sqrt(x float64) float64 {
        return sqrtRecursive(x, 1.0, 0.0, 1e-9)
}

func main() {
        x := 25.0
        result := sqrt(x)
        fmt.Printf("%.2f 的平方根為 %.6f\n", x, result)
}

以上實例中,sqrtRecursive 函數(shù)使用遞歸方式實現(xiàn)平方根的計算。

sqrtRecursive 函數(shù)接受四個參數(shù):

  • x 表示待求平方根的數(shù)
  • guess 表示當(dāng)前猜測的平方根值
  • prevGuess 表示上一次的猜測值
  • epsilon 表示精度要求(即接近平方根的程度)

遞歸的終止條件是當(dāng)前猜測的平方根與上一次猜測的平方根非常接近,差值小于給定的精度 epsilon。

在 sqrt 函數(shù)中,我們調(diào)用 sqrtRecursive 來計算平方根,并傳入初始值和精度要求,然后在 main 函數(shù)中,我們調(diào)用 sqrt 函數(shù)來求解平方根,并將結(jié)果打印出來。

執(zhí)行以上代碼輸出結(jié)果為:文章來源地址http://www.zghlxwxcb.cn/news/detail-592163.html

25.00 的平方根為 5.000000

到了這里,關(guān)于【Go】Go 語言教程--Go 語言遞歸函數(shù)(十七)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包