1. GO实现递归函数阶乘算运算
func Factorial(n uint64) (result uint64){
if (n > 0){
result = n * Factorial ( n - 1 )
retrun result
}
return 1
}
func main() {
var num int = 15
fmt.Printf("%d 的阶乘是 %d\n",num,Factorial(uint64(num)))
}
2. GO 斐波那契额列数
func fibonacci(n int) int {
if n < 2 {
return n
}
return fibonacci(n - 2) + fibonacci(n - 1)
}
3. GO模拟双色球摇号 随机数产生7个号码 不能重复
/**
递归方法
*/
//全部去重
func loop2(cp *[7]int) {
for i := 0; i < 7; i++ {
for j := 6; j >= 0; j-- {
if i == j {
continue
}
if j >= 5 {
if i < 5{
continue
}else {
if (*cp)[i] == (*cp)[j] {
(*cp)[j] = rand.Intn(12) + 1
loop2(cp)
}
}
} else if j < 5 {
if i >= 5 {
continue
}else {
if (*cp)[i] == (*cp)[j] {
(*cp)[j] = rand.Intn(35) + 1
loop2(cp)
}
}
}
}
}
return
}
func main() {
var cp [7]int
//设置随机数种子
rand.Seed(time.Now().UnixNano())
// 设置前5位随机数
for i := 0; i < 5; i++ {
cp[i] = rand.Intn(35) + 1
}
// 设置后2位随机数
for i := 5; i < 7; i++ {
cp[i] = rand.Intn(12) + 1
}
fmt.Println(cp)
loop2(&cp)
fmt.Println(cp)
}
4. 通过递归实现 1+2+3...+100
// 方法一
func Test(num int) int {
if num == 1 {
return 1
}
return num + Test(num -1)
}
// 方法二 从给定的参数开始 + 到100
func Test2(num int) int {
if num == 100 {
return 100
}
return num + Test2(num + 1)
}