迭归和迭代是我们在写算法时经常用到的,以下是对迭归几种精典用法的总结:
一,用迭归计算如求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)); // 递归地访问当前节点的所有子节点。
}
}
分享到:
相关推荐
"Dhua C语言算法归纳"很可能是对C语言中各种常见算法的整理和总结,旨在帮助学习者更好地理解和掌握这些算法。这里,我们将深入探讨C语言中的核心算法知识。 一、排序算法 1. 冒泡排序:一种简单的排序方法,通过...
本压缩包文件包含了对计算机图形学算法的归纳和说明,旨在帮助学习者理解和掌握这一领域的核心概念。 1. **基本画图算法** - 直线绘制:Bresenham算法是最常用的一种离散化直线绘制方法,适用于像素级别的画图。它...
数据挖掘是一种从海量数据中发现有价值信息的过程,而归纳算法作为数据挖掘的一种基础方法,旨在通过学习过程从数据中构建出一般性的规则或模型。在面对大规模数据集时,算法的可扩展性成为了一个核心问题。 可扩展...
归纳法在算法分析与设计中是一种重要的思想,它主要用于证明算法的正确性和设计新的算法。在计算机科学中,归纳法通常被用来解决那些可以通过分解成更小规模同类问题来解决的大问题。以下是对归纳法及其在算法应用中...
CN2规则学习算法是一种经典的归纳算法,主要用于从样本中自动学习产生式规则。产生式规则是形如“如果……则……”的语句,被广泛应用于专家系统和知识获取中,以帮助机器执行复杂的决策过程。 在人工智能和机器...
《C语言实现的归纳算法》 在编程领域,归纳算法是一种重要的问题解决方法,它通过逐步构建解决方案,从基础情况开始,然后递归地应用到更复杂的情况。本实验主要探讨了如何使用C语言实现归纳算法来解决特定的翻转...
### 递归算法及归纳法知识点详解 #### 一、递归算法简介 递归算法是一种重要的编程技术,它在计算机科学中占有举足轻重的地位。递归算法的概念最早由约翰·麦卡锡(John McCarthy)教授提出,他曾在麻省理工学院...
标题中提及的“算法文档无代码数学归纳法与解题之道”涉及到的是算法学习与应用中的一种重要逻辑推理方法——数学归纳法,以及这一方法在解决算法问题中的具体应用。算法作为一种解决问题、执行任务的方法和步骤,是...
JAVA算法[归纳].pdf
KMP算法[归纳].pdf
本篇文章将详细探讨三种常见的内存分配算法:首次适应算法(First Fit)、最佳适应算法(Best Fit)以及循环首次适应算法(Circular First Fit),并结合源代码分析它们的工作原理。 1. 首次适应算法(First Fit) ...
《ACM所有算法总结》,很不错的ACM方面资料,详实全面细致明了,希望对有需要的朋友提供到帮助,值得拥有。
模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+...
在机器学习的广袤天地中,PRISM系列归纳学习算法犹如一颗璀璨的明星,以其独特的光辉照亮了数据处理的道路。PRISM算法,作为归纳学习的佼佼者,历经二十余年的风雨兼程,在决策树归纳算法领域中异军突起,成为众多...
《算法合集之《数学归纳法与解题之道》1》这篇文章主要探讨了数学归纳法在算法设计和问题解决中的重要性,特别是它在信息学竞赛中的应用。数学归纳法是一种强大的证明工具,用于验证一个命题对所有自然数都成立。...
智能优化算法的思想可以归纳为两点:一是利用领域的思想,二是通过不断迭代和调整来寻找最优解。这两点思想在实际应用中具有很强的指导意义。例如,在机器学习算法中,我们可以运用智能优化算法来优化模型的超参数,...
EBWO改进白鲸算法, 一种混合改进的白鲸优化算法 EBWO算法 改进点:两个点 1、引入准反向学习QOBL策略,提高算法的迭代速度 2、引入旋风觅食策略,提高算法开发能力 改进后的EBWO算法与原始BWO、GWO、WOA、SSA...
常见的磁盘调度算法有先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)和循环扫描算法(CSCAN)等。 先来先服务算法(FCFS) 先来先服务算法(FCFS)是一种最简单的磁盘调度算法。该算法...
详细介绍了神经网络算法、粒子群算法、遗传算法、模糊逻辑控制、免疫算法、蚁群算法、小波分析算法及其MATLAB的实现方式等内容; 第二部分详细介绍了智能算法的工程中的应用问题,包括模糊神经网络在工程中的应用、...
Java算法全卷涵盖了基本算法和图算法,是学习和提升编程技能的重要资源。这份资料主要针对使用Java语言进行算法实现的开发者,适用于那些对ANT、EJB、J2EE、JAVA和SPRING等技术栈有了解或兴趣的人群。下面我们将深入...