斐波那契數列
先看一個案例就能夠肯明確的看出其中的規律微信
1 ,1 ,2 , 3 , 5 , 8 , 13…spa
其實就是除了第0項和第1項返回的是1,其他的返回的都是前倆項之和code
用遞歸實現斐波那契數列
package main import "fmt" func main() { for i := 0; i <= 10; i++ { fmt.Println(GetFibonacci(i)) } } /** 遞歸就是本身調本身 遞歸必定要有終止條件,不然就會無限循環 */ func GetFibonacci(n int) int { // 若是是第0項或者第2項直接返回1 if n == 0 || n == 1 { return 1 } else { return GetFibonacci(n-1) + GetFibonacci(n-2) } }
求出第6項的值
遞歸
求斐波那契數列的原理
好比說咱們要求出第5項的值,那麼就會走到else的代碼中
第五項會找第4項和第3項的值
第3項會找 2和1項的值 這個時候第1項直接返回的是1
第2會找第0和1項都會返回1
而後把全部的1加起來就是第5項的值
圖片
使用循環實現第n個天然數之和
/** 使用循環來實現天然數之和 */ package main import "fmt" func main() { fmt.Println(GetFibonacci(6)) sum := GetNum(10) fmt.Println(sum) } func GetNum(n int) (sum int) { for i := 1; i <= n; i++ { sum += i } return }
使用遞歸來實現天然數求和
/** 使用遞歸來實現天然數求和 */ package main import "fmt" func main() { getRecursion := GetRecursion(10) fmt.Println(getRecursion) } func GetRecursion(n int) (sum int) { if n == 1 { return 1 } else { return n + GetRecursion(n-1) } }
本篇文章全部的源碼,可直接執行
package main import "fmt" func main() { fmt.Println(GetFibonacci(6)) sum := GetNum(10) fmt.Println(sum) getRecursion := GetRecursion(10) fmt.Println(getRecursion) } /** 遞歸就是本身調本身 遞歸必定要有終止條件,不然就會無限循環 */ func GetFibonacci(n int) int { // 若是是第0項或者第2項直接返回1 if n == 0 || n == 1 { return 1 } else { return GetFibonacci(n-1) + GetFibonacci(n-2) } } /** 使用循環來實現天然數之和 */ func GetNum(n int) (sum int) { for i := 1; i <= n; i++ { sum += i } return } /** 使用遞歸來實現天然數求和 */ func GetRecursion(n int) (sum int) { if n == 1 { return 1 } else { return n + GetRecursion(n-1) } }
最終打印的三組數據
ci