美文网首页
线性递归、线性迭代和树形递归

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

作者: 岦_ | 来源:发表于2016-02-22 00:09 被阅读399次

开端

刚刚看到线性递归、线性迭代和树形递归这几个概念,一时兴起,便模仿起来,也算是入门练手吧,恰巧最近在看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)
    }
}

相关文章

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

    开端 刚刚看到线性递归、线性迭代和树形递归这几个概念,一时兴起,便模仿起来,也算是入门练手吧,恰巧最近在看Gola...

  • SICP-5-1.2

    线性迭代和递归通过斐波拉契算法分区了线性递归和迭代通过上一章说到的替换法,将大的计算一步步拆分成小的步骤即线性递归...

  • SICP-6-1.2

    其实迭代和递归都是通过简单步骤的重复计算得到结果只不过迭代是从小到大递增,递归是从大到小分解,消耗都是线性的 随着...

  • 广义表

    应用:存储递归的线性结构啊,比如,忘了…… 递归结构,外层结构为线性,内层结构非线形但有序 记为LS,元素分为子表...

  • 线性递归与尾递归

  • 迭代与递归(基础版)

    问题: 1.迭代 2.递归 通过实验可知,迭代运行速度比递归要快 用递归实现阶乘运算 迭代和递归的区别 迭代与递归...

  • SICP——构造程序抽象(三)

    1.线性的递归和迭代 先从阶乘的问题入手,计算n的阶乘(n!),也就是: n!=n*[(n-1)*(n-2)*(n...

  • 二叉树

    非线性结构:树和图树:是一种递归定义的递归结构,重要的非线性结构。深度:树中结点最大层次的值。(结点最多的那一层层...

  • 分治策略

    求解递归式方法 最大子数组问题 分治策略 分治法流程 伪代码 C++实现 线性解 流程 代入法求解递归式 递归树法...

  • 递归和迭代的区别?

    递归和迭代的区别? 时间:20170225 递归:】】】】】】】】】...】】】】】】】】】】】】】】】】】】】】...

网友评论

      本文标题:线性递归、线性迭代和树形递归

      本文链接:https://www.haomeiwen.com/subject/tmqbkttx.html