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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值