斐波那契数列
先看一个案例就可以肯明确的看出其中的规律
1 ,1 ,2 , 3 , 5 , 8 , 13…
其实就是除了第0项和第1项返回的是1,其余的返回的都是前俩项之和
用递归实现斐波那契数列
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) } }
/** 使用循环来实现自然数之和 */ 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) } }