递归-3种应用在go中

递归应用场景:1.数据定义是递归的-斐波那契数列,2.数据规模大-小解决方式一样-数组或者链表,常需要返回值,3.数据结构是递归的-二叉树;

递归是一种特殊函数,了解递归之前先了解透函数--参数-函数的头&返回值-函数的尾&函数内变量的作用域,作用域一般都在本栈中-但go有内存逃逸分析。使用递归,要么是问题的解决是递归的,要么是数据的结构是递归的。

操作相同,需要考虑栈与栈之间数据的不同。子栈比父栈数据规模更小,父栈把数据传递给子栈。或者子栈比父栈数据层次更深,子栈把数据发回给父栈。

同一个递归函数,可以理解为同一套加工数据的方法,也就是说同一套代码,递归函数调用子函数,每一个递归函数之间的区别在数据。

每一次递归调用,子函数都会继承父函数的数据-如果递归函数有参数的话。

递归,就是函数调用,被调用的函数干同样的事情,执行一样的逻辑;即操作是一样的;

每个函数的不同之处,在于函数传递参数不同,在go中,所有参数传递都是拷贝传递。但是在同一个函数里面分出去的叉,共享局部变量,并把局部变量拷贝走,去执行自己的操作。

递归函数因为也是一个函数,函数的属性-参数/返回值,分为3类:(先不说函数被分叉成了几个子函数调用)

有去有回  有去无回 ;这里的去,指的是函数调用子函数给子函数传递的数据,回指的是,函数体有没有返回值。

去的过程是规模的缩小,或者结构的递深。并且伴随传递参数的改变。

1 举例࿱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值