Golang函數-嵌套函數應用案例遞歸函數


         Golang函數-嵌套函數應用案例遞歸函數

                             作者:尹正傑

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。

 

 

 

一.嵌套函數的定義

package main

import (
    "fmt"
)

func add1(x int, y int) int {
    fmt.Println("in add1...")
    return x + y
}

/*
    什么是嵌套函數:
        其實就是在一個函數中調用另外的函數
*/
func add2(x int, y int) int {
    fmt.Println("in add2...")
    return add1(x, y)
}

func main() {

    res := add2(100, 20)

    fmt.Println(res)
}

 

二.嵌套函數的應用場景-遞歸函數

1>.階乘案例

package main

import (
    "fmt"
)

/*
    什么是遞歸函數:
        如果一個函數在內部不調用其它的函數,而是調用自己本身,這個函數就是遞歸函數。

    遞歸函數的應用場景:
        電商網站中的商品類別菜單的應用
        查找某個目錄下的文件

    定義遞歸函數注意事項:
        (1)函數嵌套調用函數本身
        (2)使用return指定函數出口
*/
var total = 1

func factorial(num int) {
    /*
        遞歸函數需要定義遞歸函數的結束條件,否則會出現"死遞歸"的現象,出現"死遞歸"情況程序就自動會拋出"fatal error: stack overflow"異常。
    */
    if num == 0 {
        return
    }
    total *= num

    /*
        函數內部自己調用自己,那么這個函數就是遞歸函數。
    */
    factorial(num - 1)
}

func main() {

    factorial(5)

    fmt.Printf("5的階乘是[%d]\n", total)
}

2>.上100層樓梯案例

  場景描述:
    一層樓有100個梯子,一個人上樓時他可以隨機跨越1~3個台階,那沒問題來了,這個人從第1個台節到第100個台階總共有多少種走法?請用遞歸方式實現。

  燒腦版:
    還是基於上面的場景,假設這棟樓有100層每層有100個梯子,這個人依舊是只能隨機跨越1~3個台階,那沒問題來了,這個人從第一層上到第100層樓共有多少種走法?請用遞歸實現。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM