Go语言-递归函数

目录

前言

1、阶乘

2、斐波那契数列


前言

递归函数就是在调用过程中调用自己。

语法格式:

func recursion() {
    recursion()   //函数调用自身
}

func main() {
    recursion()
}

Go 支持递归。但在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中。

递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等。

1、阶乘

示例:

package main

import "fmt"

//递归算法
func main() {
	a := 5
	fmt.Printf("%d的阶乘是:%d", a, oper(uint64(a)))
}

func oper(n uint64) (result uint64) {
	if n > 0 {
		//自己调用自己
		result = n * oper(n-1)
		return result
	}
	//退出条件
	return 1
}

//运行结果为:
5的阶乘是:120

2、斐波那契数列

示例:递归函数实现斐波那契数列。

package main

import "fmt"

//斐波那契数列:前面两数相加等于后面数的值
func main() {
	for i := 0; i < 10; i++ {
		fmt.Println("前十位斐波那契数值是:", oper(i))
	}
}

func oper(a int) int {
	if a < 2 {
		//头两位数值本身,因为斐波那契数列的排列前两位不参与。
		return a
	}
	//前两数和
	return oper(a-2) + oper(a-1)
}

//运行结果为:
前十位斐波那契数值是: 0
前十位斐波那契数值是: 1
前十位斐波那契数值是: 1
前十位斐波那契数值是: 2
前十位斐波那契数值是: 3
前十位斐波那契数值是: 5
前十位斐波那契数值是: 8
前十位斐波那契数值是: 13
前十位斐波那契数值是: 21
前十位斐波那契数值是: 34
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值