GO数据结构之栈的简单递归

一、栈的简单递归

1. 什么是递归

递归指的是一个函数(或方法)在其定义中直接或间接地调用自身。

简单来说,递归就是不断在方法内调用自身,直到碰到终止条件,跳出递归。递归常用于解决可以分解为相似子问题的问题,例如累加,累乘等等.....

递归例子:

func Add(i int) int{
    // 终止条件就是:当传入参数为0时
    if i == 0{
        return 0
    }else {
        return i + Add(i - 1)
    }
}

2. 栈实现简单递归

那么,在我们的栈中,如果我们要进行复杂的遍历或者循环存储某些内容时,就会用到递归

下面,是栈如何实现简单的递归,关于栈的定义以及实现,则在上一期 栈的简单实现中,可以点开主页查看

package list

import "testing"

func TestStack(t *testing.T) {
	stack := NewArrayListStack[int](10)
	stack.Push(5)
	result := 0

	// 终止条件是:当我的栈为空
	for !stack.IsEmpty() {
		// 取出第一个元素
		data := stack.Pop()
		if data == 0 {
			result += data
		} else {
            // 不断压入,取出,实现递归以及累加
			result += data
			stack.Push(data - 1)
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值