Go語言 遞迴函式
阿新 • • 發佈:2022-04-06
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