`
hunter090730
  • 浏览: 194697 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

迭归算法的归纳

    博客分类:
  • java
阅读更多
迭归和迭代是我们在写算法时经常用到的,以下是对迭归几种精典用法的总结: 一,用迭归计算如求1+2+3+...n累加的和 static int demo(int n) { if (n == 1){ return 1; } else{ return n + demo(n - 1); } } 二,用迭归遍历如对树形结构的数据遍历 比方说有一数据结构:Category : id,name,pid 将多个Category 放在集合里面,要求找出遍历的父子 String res = "";//对扫描的操作 public String tree(Collection co, int pid) { Iterator it = co.iterator(); while (it.hasNext()) { Category ct = it.next(); if (ct.pid == pid) { int id = ct.id; // res+=Integer.valueOf(id)+","; res = ct.name + "的id=" + id + " 其pid=" + pid; System.out.println(res); tree(co, id); } } return res; } public String tree(Collection co, Category cg) { Iterator it = co.iterator(); while (it.hasNext()) { Category ct = it.next(); if (ct.pid == cg.id) { int id = ct.id; // res+=Integer.valueOf(id)+","; res = ct.name + "的id=" + id + " 其pid=" + ct.pid; System.out.println(res); // System.out.println(ct); tree(co, ct); } } return res; } public String tree1(List co, Category cg) { for (int i = 0; i < co.size(); i++) { Category ct = (Category) co.get(i); if (ct.pid == cg.id) { int id = ct.id; // res+=Integer.valueOf(id)+","; res = ct.name + "的id=" + id + " 其pid=" + ct.pid; // System.out.println(res); System.out.println(ct); tree(co, ct); } } return res; } 二,用迭归遍历如对子节点和父节点有共同接口结构的数据遍历 跟java中的设计模式之Composite(组合)很像 Composite定义: 将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. 形如: public class GenericTreeNode implements TreeNode { private TreeNode parent = null; private List> children = new ArrayList>(); public boolean isLeaf() { return getChildCount() == 0; } public boolean isRoot() { return getParent() == null; } 。。。 } 方法一: public void recursiveTravel(GenericTreeNode node) { System.out.println(node); //travelNode(node); // 访问节点,迭归扫描的实作操作 List> children = node.getChildren(); for (int i = 0; i < children.size(); i++) { recursiveTravel(children.get(i)); // 递归地访问当前节点的所有子节点。 } }
分享到:
评论

相关推荐

    C语言算法归纳.doc

    C 语言算法归纳 本文档对 C 语言中常用的算法进行了归纳和总结,涵盖了递归法、判断素数、求闰年、求 N 的阶乘、求 m 和 n 的最大公约数和最小公倍数、大小写字母转换、求 3 个数由小到大的顺序输出、求 ax*x+b*x+c...

    Dhua c语言算法归纳

    "Dhua C语言算法归纳"很可能是对C语言中各种常见算法的整理和总结,旨在帮助学习者更好地理解和掌握这些算法。这里,我们将深入探讨C语言中的核心算法知识。 一、排序算法 1. 冒泡排序:一种简单的排序方法,通过...

    C语言常用算法归纳.pdf

    C语言常用算法归纳.pdf

    计算机图形学算法归纳

    本压缩包文件包含了对计算机图形学算法的归纳和说明,旨在帮助学习者理解和掌握这一领域的核心概念。 1. **基本画图算法** - 直线绘制:Bresenham算法是最常用的一种离散化直线绘制方法,适用于像素级别的画图。它...

    CN2规则学习算法

    CN2规则学习算法是一种经典的归纳算法,主要用于从样本中自动学习产生式规则。产生式规则是形如“如果……则……”的语句,被广泛应用于专家系统和知识获取中,以帮助机器执行复杂的决策过程。 在人工智能和机器...

    算法与数据结构 算法分析课程 递归算法及归纳法 共56页.pptx

    ### 递归算法及归纳法知识点详解 #### 一、递归算法简介 递归算法是一种重要的编程技术,它在计算机科学中占有举足轻重的地位。递归算法的概念最早由约翰·麦卡锡(John McCarthy)教授提出,他曾在麻省理工学院...

    归纳算法(C语言)

    C语言归纳算法,翻硬币,奇偶数 有N个硬币(N为偶数)正面朝上排成一排,每次将N-1个硬币翻过来放在原位置,不断地重复上述过程,直到最后全部硬币翻成反面朝上为止。设计程序让计算机把翻币的最简过程以及翻币次数...

    JAVA算法[归纳].pdf

    JAVA算法[归纳].pdf

    KMP算法[归纳].pdf

    KMP算法[归纳].pdf

    SQP算法[归纳].pdf

    SQP算法[归纳].pdf

    ACM所有算法总结.ppt

    《ACM所有算法总结》,很不错的ACM方面资料,详实全面细致明了,希望对有需要的朋友提供到帮助,值得拥有。

    模型算法大全(20+种常用算法模型+代码实现)

    模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+...

    算法合集之《数学归纳法与解题之道》1

    《算法合集之《数学归纳法与解题之道》1》这篇文章主要探讨了数学归纳法在算法设计和问题解决中的重要性,特别是它在信息学竞赛中的应用。数学归纳法是一种强大的证明工具,用于验证一个命题对所有自然数都成立。...

    易语言之算法研究(6)_归纳法.rar

    《易语言之算法研究(6)_归纳法》是关于编程领域的一个专题,主要探讨了如何在易语言中应用归纳法来解决算法问题。易语言是中国自主研发的一种编程语言,旨在简化编程过程,使得初学者也能快速上手。在这个专题中,...

    归纳法原理

    归纳法原理

    C语言快速排序算法[归纳].pdf

    C语言快速排序算法[归纳].pdf

    java算法全卷(包括基本算法和图算法)

    Java算法全卷涵盖了基本算法和图算法,是学习和提升编程技能的重要资源。这份资料主要针对使用Java语言进行算法实现的开发者,适用于那些对ANT、EJB、J2EE、JAVA和SPRING等技术栈有了解或兴趣的人群。下面我们将深入...

    易语言源码易语言之算法研究(6)_归纳法.rar

    《易语言源码:易语言之算法研究(6)_归纳法》 易语言,作为一款中国本土化的编程语言,以其直观、简洁的语法设计深受初学者喜爱。在易语言的算法研究领域,归纳法是一种重要的思维方式,它在解决数学问题和编程问题...

    Dijstra算法与A*算法的比较

    对Dijstra算法与A*算法进行了比较

Global site tag (gtag.js) - Google Analytics