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) } } }