美文网首页
递归算法

递归算法

作者: 极客123 | 来源:发表于2018-12-26 15:36 被阅读0次

递归: 自己调用自己的编程思想


  • 需要递归的数据项只有0个,特殊处理一波
  • 需要递归的数据项只有1个,特殊处理一波
  • 多个数据,注意递归的结束控制

递归注意栈溢出:堆中实体数据世界,栈中引用世界
递归消耗很大,能不用则不用,个人观点


可执行函数组成: 代码段、静态数据区、堆、栈;


尾递归

新的递归函数的返回值覆盖旧的递归函数返回值

package main.java.java数据结构与算法第一课;

public class DG_1 {

    public static void main(String[] args) {
       System.out.println(dg(5,1));
        System.out.println("=========");
       //  System.out.println(tdg(5));
    }
    static int i = 1;
    public static int tdg(int x) {
        if ( x == 1 ) {
            return 1;
        }else{
            System.out.println("x : " + x );
            /**
             *    tdg递归函数在运用递归的时候,会在栈中迭代加载完函数,然后通过弹栈操作,逐个计算
             *    结果,最后返回结果
             *    存在问题: 导致栈的深度过深,存在空间消耗和浪费,同时函数入栈堆叠,想拿到最终结果需要栈把
             *    所有函数引用调用完成,时间消耗多
             */
            return x*tdg(x-1);
        }

    }


    public static int dg(int x , int tmp ) {
        if ( x == 1 ) {
            return tmp;
        }else{
            System.out.println("tmp :" + tmp + " x : " + x);
            /**
             * 这里只是调用了函数本身,递归思想仍然在,但是,在函数栈中,新的函数会记录上个函数的值到tmp中
             * 栈中存在的函数栈引用无,每个函数调用后都会把自己占用的空间释放
             * 尾递归的调用链上可以做到只有一个函数在使用栈,因此可以无限地调用!
             */
            return dg(x-1,x*tmp);
        }

    }



}


相关文章

  • 快速幂模板

    递归算法 非递归算法

  • python递归算法、尾递归算法及优化

    文章概述 递归算法和尾递归概述递归算法的优化 递归算法 介绍:递归算法是计算机编程领域非常重要的一种算法,采用分而...

  • C++ 递归算法

    递归算法,尾递归算法求阶乘!

  • Java递归算法详解

    递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的...

  • 矩阵链乘法

    递归算法: 迭代算法: 分析 递归算法:规模为n的问题,有n个递归,每个递归又有相应矩阵个数个递归,故T(n)=T...

  • 【Python】(十一)从汉诺塔看Python中的递归问题

    递归的原则 递归算法必须具有基本情况。 递归算法必须改变其状态并向基本情况靠近。 递归算法必须以递归方式调用自身 ...

  • 一、算法

    目标 递归算法查找算法算法分析十大排序算法 递归算法 什么是递归递归,在数学与计算机科学中,是指在函数的定义中使用...

  • 欧几里得算法

    非递归算法 默认输入 m>=n 递归算法

  • 递归、回溯、分治

    递归 (1)子集 方式一:递归算法 方式二:位运算算法 (2)子集II 方法一:递归算法 方法二:位运算 (3)组...

  • 二叉树三种遍历的实现(递归)

    前序递归遍历算法:访问根结点-->递归遍历根结点的左子树-->递归遍历根结点的右子树 中序递归遍历算法:递归遍历根...

网友评论

      本文标题:递归算法

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