一、栈的简单递归
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)
}
}
}