老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

Go程序开发培训_Go语言中什么是递归函数?构成条件是什么?

老男孩IT教育

常见问题

2021年12月27日 17:47

递归,就是在运行的过程中调用自己。一个函数调用自己,就叫做递归函数。

  递归,就是在运行的过程中调用自己。一个函数调用自己,就叫做递归函数。

  构成递归需具备的条件:

  1、子问题须与原始问题为同样的事,且更为简单。

  2、不能无限制地调用本身,须有个出口,化简为非递归状况处理。

Golang培训班

  Go编程语言支持递归,即函数调用函数本身。在使用递归时,需要谨慎确定函数的退出条件,否则会造成无限循环。

  递归函数可以解决许多数学问题,如计算给定数字阶乘、产生斐波系列等。

  数字阶乘

  一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。

  亦即n!=1×2×3×…×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

  使用一个递归函数由给定数计算阶乘,实例如下:

package main

import "fmt"

func factorial(i int) int {
    if i <= 1 {
        return 1
    }
    return i * factorial(i-1)
}

func main() {
    var i int = 9
    fmt.Printf("Factorial of %d is %d\n", i, factorial(i))
}

  斐波那契数列(Fibonacci)

  斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

  这个数列从第3项开始,每一项都等于前两项之和。

  使用一个递归函数由给定的一个数产生斐波那契数列,实例如下:

package main

import "fmt"

func fibonaci(i int) int {
    if i == 0 {
        return 0
    }
    if i == 1 {
        return 1
    }
    return fibonaci(i-1) + fibonaci(i-2)
}

func main() {
    var i int
    for i = 0; i < 10; i++ {
        fmt.Printf("%d\n", fibonaci(i))
    }
}

  老男孩教育专注Linux云计算运维工程师、Python全栈+人工智能、Python自动化运维开发、网络安全、数据分析、MySQL DBA开发、K8S微服务、Go语言等互联网课程的培训。欢迎对it行业感兴趣的朋友们来公司考察及学习。

  推荐阅读:

  Golang培训班_Go语言支持哪三种循环控制语句?

  用Golang语言进行网站开发有哪些优势?GO开发语言培训

  【GO语言知识培训】之单元测试学习!

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。