迭归和迭代是我们在写算法时经常用到的,以下是对迭归几种精典用法的总结:
一,用迭归计算如求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语言常用算法归纳.pdf
归纳法在算法分析与设计中是一种重要的思想,它主要用于证明算法的正确性和设计新的算法。在计算机科学中,归纳法通常被用来解决那些可以通过分解成更小规模同类问题来解决的大问题。以下是对归纳法及其在算法应用中...
一种新的直线逐点比较法插补算法归纳.pdf
常用算法一 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:计算 直到最后一项的绝对值小于1e-7时...
"PRISM系列归纳学习算法综述" PRISM系列归纳学习算法是机器学习领域中的一类重要算法,它们具有广泛的应用前景。PRISM算法作为归纳学习算法的典型代表之一,已经发展了二十多年,并在多种归纳学习任务中获得了成功...
归纳法是一种重要的数学证明方法,它在算法设计中也扮演着关键角色。归纳法分为两种主要类型:数学归纳法和结构归纳法。这篇论文翻译主要探讨了如何利用归纳法来设计有效的计算机算法。 数学归纳法通常用于证明一个...
标题中提及的“算法文档无代码数学归纳法与解题之道”涉及到的是算法学习与应用中的一种重要逻辑推理方法——数学归纳法,以及这一方法在解决算法问题中的具体应用。算法作为一种解决问题、执行任务的方法和步骤,是...
### 归纳算法程序设计(硬币翻转问题) #### 知识点解析 本篇文章将详细介绍一个关于归纳算法的经典示例——硬币翻转问题,并通过一段C语言代码进行实现。该问题不仅可以帮助理解归纳法的基本思想,还能够加深对...
利用MPI计算矩阵相乘的简单算法[归纳].pdf
《各种算法及MATLAB实现——个人归纳》 MATLAB,全称Matrix Laboratory,是一种功能强大的数值计算和符号计算软件,广泛应用于科学计算、数据分析、工程设计等领域。它以其直观的编程环境和丰富的数学函数库,成为...
本篇文章将详细探讨三种常见的内存分配算法:首次适应算法(First Fit)、最佳适应算法(Best Fit)以及循环首次适应算法(Circular First Fit),并结合源代码分析它们的工作原理。 1. 首次适应算法(First Fit) ...
《ACM所有算法总结》,很不错的ACM方面资料,详实全面细致明了,希望对有需要的朋友提供到帮助,值得拥有。
模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+...
智能优化算法的思想可以归纳为两点:一是利用领域的思想,二是通过不断迭代和调整来寻找最优解。这两点思想在实际应用中具有很强的指导意义。例如,在机器学习算法中,我们可以运用智能优化算法来优化模型的超参数,...
《易语言之算法研究(6)_归纳法》是关于编程领域的一个专题,主要探讨了如何在易语言中应用归纳法来解决算法问题。易语言是中国自主研发的一种编程语言,旨在简化编程过程,使得初学者也能快速上手。在这个专题中,...
c语言经典算法之归纳算法。翻硬币。 编译软件:DEV C++5.
电梯调度算法是优化高层建筑内电梯运行效率的关键技术,它涉及到多门学科,如计算机科学、控制理论和人工智能。在给定的压缩包文件中,包含了一系列关于电梯调度算法的资料,涵盖了强化学习、LOOK调度、最短寻道、...
常见的磁盘调度算法有先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)和循环扫描算法(CSCAN)等。 先来先服务算法(FCFS) 先来先服务算法(FCFS)是一种最简单的磁盘调度算法。该算法...