题目:
分析
通过实例不难发现一个规律,
第一条者恒永远是down
第i条折痕,它的上下都是第i+1条折痕的down和up
这也就是一颗二叉树,要从上向下打印折痕,就是二叉树的中序遍历
通过以上分析,我们只需要实现二叉树的中序遍历代码即可
代码:
package main
import (
"fmt"
// "math"
)
func process(i,n int,down bool){
if i >n{
return
}
process(i+1,n,true)
if down{
fmt.Println("DOWN")
}else{
fmt.Println("UP")
}
process(i+1,n,false)
}
func folding(n int){
process(1,n,true)
}
func main(){
n:=3
folding(n)
}
递归的过程比较难理解,一旦画出函数调用栈,每个递归的返回地址和调用过程就一目了然