1. 程式人生 > 其它 >Go語言 遞迴函式

Go語言 遞迴函式

Go語言  遞迴函式

 

引言

遞迴函式對於解決數學上的問題是非常有用的,比如計算階乘,生成斐波那契數列等.

 

1. 什麼是遞迴函式

2. 數字階乘

3. 斐波那契數列(Fibonacci)

 

 

 

1. 什麼是遞迴函式

  • 遞迴,就是在執行的過程中呼叫自己
  • 一個函式呼叫自己,就叫做遞迴函式

構成遞迴需具備的條件:

子問題須與原始問題為同樣的事,且更為簡單;
不能無限制地呼叫本身,須有個出口,化簡為非遞迴狀況處理。

  

2. 數字階乘

  • 階乘是基斯頓·卡曼於 1808 年發明的運算子號,是數學術語
  • 一個正整數的階乘(factorial)是所有小於及等於該數的正整數的積,並且0的階乘為1
  • 自然數n的階乘寫作n!
package main

import "fmt"

func factorial(i int) int {
    if i <= 1 {
        return 1
    }
    return i * factorial(i-1)
}

func main() {
    var i int = 7
    fmt.Printf("Factorial of %d is %d\n", i, factorial(i))
}


//輸出結果如下:

Factorial of 7 is 5040

  

 

3. 斐波那契數列(Fibonacci)

這個數列從第3項開始,每一項都等於前兩項之和。

package main

import "fmt"

func fibonaci(i int) 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\n", fibonaci(i))
    }
}

//輸出結果如下:
0
1
1
2
3
5
8
13
21
34