美文网首页
递归算法

递归算法

作者: 小丘啦啦啦 | 来源:发表于2019-03-25 16:44 被阅读0次

一、说明
递归算法就是直接或者间接调用自身的算法,递归函数也如此。
递归的数学模型起始就是归纳法。解决一个问题,转化为解决它们的子问题,而子问题又转化为子问题,然后会发现这些问题都是同一个模型,即存在相同的逻辑归纳处理项。例外即是递归结束的处理,不再适用我们的归纳处理项,否则就无穷递归了。

void func(val){
  if(end){   //判断归纳终点,结束条件
    val = constExpression;   //直接求解表达式,即在结束条件下能够直接计算返回值的表达式
    return val;    //递归结束处理(return结果等)
  } else {   //不符合结束,进行递归处理
    accumrateExpreesion;   //逻辑归纳项
     //适用于一切非适用于结束条件的子问题的处理,当然步进表达式其实就是包含在这里面了。
    val = expression;   //步进表达式,问题蜕变成子问题的表达式
    func(val) ;   //调用本身进行递归
  }
} 

递归实际体现了“以此类推”、“用同样的步骤重复”这样的思想。
还有数据结构如二叉树,结构本身固有递归特性。
二、递归实例
1、最经典的就是n!,即n的阶层算法。
n! = n * (n-1) * (n-2) * ...* 1(n>0)

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num  = input.nextInt();
        int result = countRank(num);
        System.out.println(num+"阶层计算结果:"+result);
        input.close();
    }
    /**
     * n阶层计算的递归方法
     */
    public static int countRank(int num){
        if(num==1){
            return num;
        }else{
            int Num = num*countRank(num-1);
            return Num;
        }
    }
}

2、二叉树。类似于:查找当前租户的所有下级租户(当前租户有下一级的租户,然后每个下级租户又可能有再下级租户。。。以此类推下去)。

public List<String> listChildRentByRent(String rent){   //rent,租户号
    List<String> list = listChildRent(rent);   //listChildRent,查找租户的所有下级租户list
    if(list.size()==0){
        return list;
    }else{
        for(int a=0;a<list.size();a++){
            list.addAll(listChildRentByRent(list.get(a)));
        }
        return list;
    }       
}

相关文章

  • 快速幂模板

    递归算法 非递归算法

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

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

  • C++ 递归算法

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

  • Java递归算法详解

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

  • 矩阵链乘法

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

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

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

  • 一、算法

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

  • 欧几里得算法

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

  • 递归、回溯、分治

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

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

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

网友评论

      本文标题:递归算法

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