您现在的位置是:自如初>Go基础Go基础

22、Go 函数- 递归函数

温新 2023-08-29 23:53:48 Go基础 94人已围观

简介当一个函数在其函数体内调用自身,则称之为递归。也就是说,函数在运行过程中自己调用自己。

hi,我是温新

什么是递归函数

当一个函数在其函数体内调用自身,则称之为递归。也就是说,函数在运行过程中自己调用自己。

注意:使用递归函数时,一定要有终止条件,否则递归将进入无限循环,知道内存溢出。

递归函数语法格式

func main () {
   recursion()
}

func recursion() {
   recursion() // 自己调用自己
}

递归函数案例

1、阶乘

package main

import "fmt"

func main() {
   var i int = 3

   fmt.Printf("%d 的阶乘是 %d\n", i, Factorial(uint64(i)))
}

func Factorial(n uint64) (result uint64) {
   if n > 0 {
       result = n * Factorial(n-1)
       return result
   }

   return 1
}

2、斐波那契

package main

import "fmt"

func main() {
   i := 15
   fmt.Printf("%d 的阶乘是 %d\n", i, Fibonacci(uint64(i)))
}

func Fibonacci(n uint64) uint64 {
   if n == 0 {
       return 0
   } else if n == 1 {
       return 1
   } else {
       return Fibonacci(n-1) + Fibonacci(n-2)
   }
}

3、猴子吃桃问题

有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!以后每天猴子都吃其中的一半,然后再多吃一个。当到第十天时,想再吃时(还没吃),发现只有1个桃子了。问题:最初共多少个桃子?

package main

import "fmt"

func main() {
   fmt.Printf("桃子 %d", Moneky(8))
}

func Moneky(day int) int {
   if day > 10 || day < 1 {
       return 0
   } else if day == 10 {
       return 1
   } else {
       // 桃子的数量
       num := (Moneky(day+1) + 1) * 2

       return num
   }
}

很赞哦!(3)

文章评论

登录 注册

自如初--时间轴

站名:自如初

独白:向前走!向前走!

邮箱:ziruchu@qq.com

RSS: RSS

站点信息