go 递归函数

一、什么是递归函数?

  当一个函数在其函数体内调用自身,则称之为递归。

二、引用经典例子:斐波那切数列

package main

import "fmt"

func main(){
        result := 0
        for i := 0; i <= 10; i++ {
                result = fibonacci(i)
                fmt.Printf("fibonacci(%d) is: %d\n", i, result)
        }
}

func fibonacci(n int )(res int){
        if n <= 1{
                res = 1
        }else {
                res = fibonacci(n-1) + fibonacci(n-2)
        }
        return
}
//输出:

fibonacci(0) is: 1

fibonacci(1) is: 1

fibonacci(2) is: 2

fibonacci(3) is: 3

fibonacci(4) is: 5

fibonacci(5) is: 8

fibonacci(6) is: 13

fibonacci(7) is: 21

fibonacci(8) is: 34

fibonacci(9) is: 55

fibonacci(10) is: 89

  调用前两个数,相加,得到值。

三、相互闭环调用

package main

import "fmt"

func main() {
        fmt.Printf("%d is event: is %t \n", 16, even(16))
        fmt.Printf("%d is odd: is %t\n", 17, odd(17))
        fmt.Printf("%d is odd: is %t\n", 18, odd(18))
}

func even(nr int) bool {
        if nr == 0 {
                return true
        }
        return odd(RevSign(nr) - 1)
}

func odd(nr int) bool {
        if nr == 0 {
                return false
        }
        return even(RevSign(nr) - 1)
}

func RevSign(nr int) int {
        if nr < 0 {
                return -nr
        }
        return nr
}
输出:

16 is event: is true

17 is odd: is true

18 is odd: is false