您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页【go从零单排】递归函数Recursive Functions和斐波那契数列

【go从零单排】递归函数Recursive Functions和斐波那契数列

来源:意榕旅游网

Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

递归函数

package main

import "fmt"

// 函数fact 输入一个int类型,返回一个int类型
func fact(n int) int {
	if n == 0 {
		return 1
	}
	return n * fact(n-1) //return中调用了fact函数,调用自己本身的函数称为递归
}

func main() {
	fmt.Println(fact(7))
	//fib是一个函数类型的变量,接受一个int,返回一个int
	//func(n int)int 这是一个匿名函数,也是可以递归的,但在递归之前必须显示声明一个变量存储这个函数
	var fib func(n int) int

	fib = func(n int) int {
		if n < 2 {
			return n
		}

		return fib(n-1) + fib(n-2)
	}

	fmt.Println(fib(7))
}

输出:

go run post.go
5040
13

  • 这个匿名函数被赋值给 fib 变量。
  • 当 n 小于 2 时,函数直接返回 n(即当 n 为 0 时返回 0,n 为 1 时返回 1)。
  • 否则,函数通过递归调用 fib(n-1) 和 fib(n-2) 来计算斐波那契数列的值。

一句话总结:
递归函数就是在函数内部调用函数本身的函数。

斐波那契数列

这其实是一个数学问题,代码理解了,现在我们来看计算过程。

递归算法注意

在使用递归算法时,有几点需要注意:

掌握知识的最好方式就是教会别人,每篇文章都讲清楚一个知识点,欢迎留言我一起讨论。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务