栈模拟低级递归
package main
import (
"godemo01/ArrayList"
"fmt"
)
func Add(num int) int{
if num == 0 {
return 0
}else {
return num + Add(num - 1)
}
}
func main() {
fmt.Println(Add(5))
myStack := ArrayList.NewArrayListStackX()
myStack.Push(5)
last := 0
for !myStack.IsEmpty() {
data := myStack.Pop()
if data == nil {
break
}
if data == 0 {
last += 0
}else {
last += data. (int)
myStack.Push((data. (int) - 1))
}
}
fmt.Println(last)
}
斐波拉契数列递归模拟
package main
import (
"godemo01/ArrayList"
"fmt"
)
func FB(num int) int {
if num == 1 || num == 2{
return 1
}
return FB(num - 1) + FB(num - 2)
}
func main() {
fmt.Println(FB(6))
myStack := ArrayList.NewArrayListStackX()
myStack.Push(7)
last := 0
for !myStack.IsEmpty() {
data := myStack.Pop()
if data == 1 || data == 2 {
last += 1
}else {
myStack.Push(data. (int) - 1)
myStack.Push(data. (int) - 2)
}
}
fmt.Println(last)
}
栈实现文件夹遍历
package main
import (
"fmt"
"errors"
"io/ioutil"
)
func GetAll(path string, files[]string)([]string, error) {
read, err := ioutil.ReadDir(path)
if err != nil {
return files, errors.New("文件夹不可读取")
}
for _,fi:= range read {
if fi.IsDir() {
fullDir := path + "\\" +fi.Name()
files = append(files, fullDir)
files, _ = GetAll(fullDir, files)
}else {
fullDir := path + "\\" +fi.Name()
files = append(files, fullDir)
}
}
return files, nil
}
func main() {
path := "D:\\桌面程序\\ceshi"
files := []string{}
files,_ = GetAll(path, files)
for i := 0; i < len(files); i++ {
fmt.Println(files[i])
}
}

栈模拟遍历文件
package main
import (
"godemo01/StackArray"
"fmt"
"io/ioutil"
)
func main() {
myStack := StackArray.NewStack()
path := "D:\\桌面程序\\ceshi"
files := []string{}
myStack.Push(path)
for !myStack.IsEmpty() {
path := myStack.Pop(). (string)
files = append(files, path)
read, _ := ioutil.ReadDir(path)
for _, fi := range read {
if fi.IsDir() {
fullDir := path + "\\" +fi.Name()
myStack.Push(fullDir)
} else {
fullDir := path + "\\" +fi.Name()
files = append(files, fullDir)
}
}
for i := 0; i < len(files); i++ {
fmt.Println(files[i])
}
}
