zoukankan      html  css  js  c++  java
  • 计算机程序的构造和解释>1构造过程抽象>1.2过程与它们所产生的计算

    线性递归:

    function factorial(n){
        return n==1 ? 1 : n*factorial(n-1);
    }

    线性迭代:

    function factorial(n){
        return fact_iter(1,1,n);
    }
    function fact_iter(product, counter, max_count){
        return counter > max_count ? product :
                fact_iter((counter * product), (counter + 1), max_count);
    }

    线性递归的计算过程形状,是先扩张后收缩状。解释器还要保存,线性递归的计算步骤。

    线性迭代保存计算结果,无需解释期保存计算步骤。

    所以,速度上,线性迭代占优势。但,理解上,线性递归,占优势。

    树形递归:

    function fib(n){
        return n== 0 ? 0 : n==1 ? 1 : 
        fib(n- 1)+fib(n- 2);
    }

    算法的时间与空间,估算。


    合乎自然而生生不息。。。
  • 相关阅读:
    顺序栈用C语言实现
    对队列的操作和算法
    对链表的操作与算法
    对动态数组的操作与算法
    链表
    冒泡排序
    指针之动态分配内存
    字符串匹配KMP算法
    DS二叉树--层次遍历
    DS图--最小生成树
  • 原文地址:https://www.cnblogs.com/samwu/p/2464968.html
Copyright © 2011-2022 走看看