Go之路(十一):内置函数和递归

内置函数和递归

 

主要说一下panic和recover

panic是用来抛出异常

直接Panic(error)

recover用来捕获异常

defer func(){
    if err := recover();err == nil{
                 fmt.Print(err)
    }
}

 

 

 

 

递归:

练习1:一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子

func yazi(n int)int{
	if n == 7{
		return 2
	}

	return (yazi(n+1)+1)*2

}

 练习2:角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。

func ziranshu(m ,n int)int{
	if m==1{
		return n+1
	}else{
		fmt.Println(m)
		if m % 2 ==0{
			n++
			return ziranshu(m/2,n)
		}else{
			n++
			return ziranshu(m*3+1,n)
		}
	}

}

  

 

posted @ 2018-12-02 15:28  __Miracle  阅读(125)  评论(0)    收藏  举报