对递归的理解很浅,经常困在底层递归中,有推荐看sicp前两章的
记录下题目,斐波那契就跳过了
func hanota(A []int, B []int, C []int) []int {
n:=len(A)
dfs(&A,&B,&C,n)
return C
}
//递归函数,a通过b向c移动n个数据
func dfs(a,b,c *[]int,n int){
if n==1{
*c = append(*c,(*a)[len(*a)-1])
*a = (*a)[:len(*a)-1] //截断不包含后面的一个
}
if n>1{
//n-1 通过c放b,1个底层放c,n-1通过a放c
dfs(a,c,b,n-1)
dfs(a,b,c,1)
dfs(b,a,c,n-1)
}
}
原文:https://www.cnblogs.com/9527s/p/15310150.html