go 递归

递归就是指在函数本身的内部又调用自己, 如:

func f {             // 声明f函数

       println("我将调用自己")

       f()             // 在函数内部调用自己

}

go语言支持递归, 和其它语言的递归一样, 必须设置函数退出条件, 否则就成了死递归

求阶乘:

func main() {   
    var result = f(4)
    fmt.Println(result)
}
func f(i uint32) (res uint32) {    // 函数功能是求某个正数的阶乘
    if i > 1 {
        res = i * f(i-1)           // 4! = 4*3! = 4*3*2! = 4*3*2*1! = 4*3*2*1
    } else {                       // 如果传入的值为1, 则直接返回1
        res = 1    
    }
    return res
}

斐波那契数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55

例, 求斐波那契数列的第10项

func main() {   
    fmt.Println(f(10))		// 结果55
}
func f(n int) (res int) {
    if n < 2 {
        return n
    }
    return f(n-1) + f(n-2)	// f(10) = f(9) + f(8) (分别计算f(9)和f(8))
}

如果要打印出数列前N项, 则使用一个循环, 即循环调用N次此函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值