线性递归、线性迭代和树形递归

开端

刚刚看到线性递归、线性迭代和树形递归这几个概念,一时兴起,便模仿起来,也算是入门练手吧,恰巧最近在看Golang这门很简陋(是的,贬义,哈哈~~)的语言。

  • 线性递归
//线性递归方法求阶乘
package main
import "fmt"
func main() {
    fmt.Println(factorial(6))
}
func factorial(i int) (n int) {
    if i == 1 {
        return 1
    } else {
        return i * factorial(i-1)
    }
}
  • 树形递归
//树形递归方法求某个斐波那契数
package main
import "fmt"
func main() {
    fmt.Println(fib(8))
}
func fib(i int) int {
    switch i {
    case 0:
        return 0
    case 1:
        return 1
    default:
        return fib(i-1) + fib(i-2)
    }
}
  • 线性迭代
//线性迭代方法求某个斐波那契数
package main
import "fmt"
func main() {
    fmt.Println(fib(8))
}
func fib(i int) (n int) {
    return fibIter(1, 0, i)
}
func fibIter(x, y, z int) (n int) {
    if z == 0 {
        return y
    } else {
        return fibIter(x+y, x, z-1)
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容