斐波那契数列
先看一个案例就能够肯明确的看出其中的规律微信
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