标签:func 拼接 else pre tps 问题 动画 lan append
golang 递归 实现经典汉诺塔问题
// 从A-->C ,借助B
func hanota(A []int, B []int, C []int) []int {
n := len(A)
helpHanota(n, &A, &B, &C)
return C
}
func helpHanota(n int, A ,B ,C *[]int){
if n == 1 {
// 如果A只剩一个元素,则令C拼接A的最后一个元素,将A置空
*C = append(*C, (*A)[len(*A)-1])
*A = (*A)[:len(*A)-1]
} else {
// 将前面n-1个元素从A移动到B,操作完之后C为空,A只剩一个
// 从 A-->B,借助C
helpHanota(n-1, A, C, B)
// 将A仅剩的那个,也就是最大的元素放到C上面
*C = append(*C, (*A)[len(*A)-1])
// 将A置空
*A = (*A)[:len(*A)-1]
// 再以A(此时为空作为中转)递归进行
// 从 A-->C,借助B
helpHanota(n-1, B, A, C)
}
}
标签:func 拼接 else pre tps 问题 动画 lan append
原文地址:https://www.cnblogs.com/newbase/p/13299640.html