迭归和迭代是我们在写算法时经常用到的,以下是对迭归几种精典用法的总结:
一,用迭归计算如求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 语言算法归纳 本文档对 C 语言中常用的算法进行了归纳和总结,涵盖了递归法、判断素数、求闰年、求 N 的阶乘、求 m 和 n 的最大公约数和最小公倍数、大小写字母转换、求 3 个数由小到大的顺序输出、求 ax*x+b*x+c...
"Dhua C语言算法归纳"很可能是对C语言中各种常见算法的整理和总结,旨在帮助学习者更好地理解和掌握这些算法。这里,我们将深入探讨C语言中的核心算法知识。 一、排序算法 1. 冒泡排序:一种简单的排序方法,通过...
C语言常用算法归纳.pdf
归纳算法设计技术是一种在计算机科学中广泛使用的编程策略,它主要应用于解决那些具有明显模式或规律的问题。在处理复杂问题时,归纳法可以帮助我们通过分析问题的实例,找出其内在的规律,然后依据这些规律构建出...
本压缩包文件包含了对计算机图形学算法的归纳和说明,旨在帮助学习者理解和掌握这一领域的核心概念。 1. **基本画图算法** - 直线绘制:Bresenham算法是最常用的一种离散化直线绘制方法,适用于像素级别的画图。它...
归纳法在算法分析与设计中是一种重要的思想,它主要用于证明算法的正确性和设计新的算法。在计算机科学中,归纳法通常被用来解决那些可以通过分解成更小规模同类问题来解决的大问题。以下是对归纳法及其在算法应用中...
CN2规则学习算法是一种经典的归纳算法,主要用于从样本中自动学习产生式规则。产生式规则是形如“如果……则……”的语句,被广泛应用于专家系统和知识获取中,以帮助机器执行复杂的决策过程。 在人工智能和机器...
《C语言实现的归纳算法》 在编程领域,归纳算法是一种重要的问题解决方法,它通过逐步构建解决方案,从基础情况开始,然后递归地应用到更复杂的情况。本实验主要探讨了如何使用C语言实现归纳算法来解决特定的翻转...
常用算法一 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:计算 直到最后一项的绝对值小于1e-7时...
### 递归算法及归纳法知识点详解 #### 一、递归算法简介 递归算法是一种重要的编程技术,它在计算机科学中占有举足轻重的地位。递归算法的概念最早由约翰·麦卡锡(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算法,作为归纳学习的佼佼者,历经二十余年的风雨兼程,在决策树归纳算法领域中异军突起,成为众多...
智能优化算法的思想可以归纳为两点:一是利用领域的思想,二是通过不断迭代和调整来寻找最优解。这两点思想在实际应用中具有很强的指导意义。例如,在机器学习算法中,我们可以运用智能优化算法来优化模型的超参数,...
归纳法原理
详细介绍了神经网络算法、粒子群算法、遗传算法、模糊逻辑控制、免疫算法、蚁群算法、小波分析算法及其MATLAB的实现方式等内容; 第二部分详细介绍了智能算法的工程中的应用问题,包括模糊神经网络在工程中的应用、...