GO语言基础-06-函数-04-递归函数(斐波那契序列、阶乘)

文章目录

  • 1. 概念
  • 2. 示例(阶乘)
  • 3. 示例(斐波那契序列)

1. 概念

当一个函数在其函数体内调用自身,则称之为递归。

注意:递归必须接近边界值,否则将无限循环下去

2. 示例(阶乘)

package main

import "fmt"

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

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

说明:
如果返回值不定义为变量 result,则函数中的变量 result需要初始化,可写成:

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

结果输出

[root@liubei go-test]# go run test.go
15 的阶乘是 130767368000

3. 示例(斐波那契序列)

说明:定义一个名为fibonacci的函数,当n小于2时返回本身,当n大于等于2时,返回前边两个数的和。(其中前边两个数的和调用了该函数本身)

  • 代码
package main

import "fmt"

func fibonacci(n int) int {
	if n < 2 {
		return n
	}
	return fibonacci(n-2) + fibonacci(n-1)
}

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

  • 结果
1	1	2	3	5	8	13	21	34	55

你可能感兴趣的:(#,go基础,golang,GO语言,递归函数,斐波那契,阶乘)