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

递归的几种形式

 
阅读更多

 

有返回值,单支树形式:

 

	long factorial(int n) //求阶乘
	{
		if(n==0|n==1)
			return 1;
		else
			return factorial(n-1)*n;
	}

有返回值, 二叉树形式:

	long fibonacci(int n) //Fibonacci数列
	{
		if(n==0|n==1)
			return 1;
		else
			return fibonacci(n-1)+fibonacci(n-2);
	}

 有返回值,多叉树形式(上一篇文章中的例子):

 

	public static int count2(String subStr, int preAlphabetPosition,int allPossiblePosition)
	{
		int sum = 0;
		if (subStr.charAt(0) != 'A' && subStr.charAt(0) != 'B')
			throw new IllegalArgumentException();
		if (subStr.length() == 1 & subStr.charAt(0) == 'A')
			return sum += preAlphabetPosition + 1;
		if (subStr.length() == 1 & subStr.charAt(0) == 'B')
			return sum += allPossiblePosition - preAlphabetPosition;

		if (subStr.charAt(0) == 'A')
		{
			for (int index = 0; index <= preAlphabetPosition; index++)
			{
				sum += count(subStr.substring(1), index,allPossiblePosition + 1);
			}
			return sum;
		}
		else// ='B'
		{
			for (int index = preAlphabetPosition + 1; index <= allPossiblePosition; index++)
			{
				sum += count(subStr.substring(1), index,allPossiblePosition + 1);
			}
			return sum;
		}
		
	}

 无返回值,传引用,二叉树形式:

 

	void quickSort(Object[] data,int min, int max)
	{
		int indexOfPartition;
		if(max-min>0)
		{
			indexOfPartition=findPartition(data,min,max);
			quickSort(data,min,indexOfPartition-1);
			quickSort(data,indexOfPartition+1,max);		
		}
	}
 
这里只是抛砖引玉,希望找到更多不一样的形式…………望高手多多指教

0
2
分享到:
评论

相关推荐

    几种分形图形的制作,主要是用递归实现的

    本项目探讨了几种通过递归算法实现的分形图形的制作方法,包括分形树、斯宾斯基篓垫(Sierpinski Triangle)、Couch曲线以及分形矩形。这些图形的生成不仅展示了数学的美感,也是计算机图形学领域的重要研究内容。 ...

    .net 递归算法 .net 递归算法.net 递归算法

    在.NET编程环境中,递归算法是一种强大的工具,它允许函数或方法调用自身来解决复杂问题。递归的核心思想是将大问题分解为相同或相似的小问题,直到问题变得足够简单,可以直接得出答案。这种解决问题的方式在数据...

    二叉树的构造,递归和非递归的几种遍历

    二叉树可以通过两种主要方式创建:前向构造和后向构造。前向构造通常是动态地添加节点,根据需要逐步构建树;后向构造则可能涉及序列化和反序列化的过程,例如从已知的节点序列重建二叉树。在`test.cpp`中,可能会...

    5.6 递归思想和递归函数1

    递归函数是实现递归思想的一种方式,通常在函数内部调用自身来解决复杂问题。本节将深入探讨递归思想和递归函数的概念,并通过几个具体的Python示例来阐述其工作原理和应用。 首先,理解递归的关键在于明确两个核心...

    合并排序递归和非递归算法

    在比较递归和非递归算法时,我们通常关注以下几个方面: 1. **空间效率**:递归算法可能会占用更多的栈空间,因为每次递归调用都会增加栈的深度。而非递归算法则通常需要额外的数据结构来存储待处理的任务。 2. **...

    易语言递归算法1

    在"易语言递归算法1"的源码中,可能会涉及以下几种常见的递归应用场景: 1. **斐波那契数列**:递归算法可以用来计算斐波那契数列,每一项都是前两项之和。例如,`fib(n) = fib(n-1) + fib(n-2)`,其中`fib(0) = 0`...

    5·5递归算法,递归思想

    递归算法常用于以下几种典型问题: - **阶乘计算**:如计算n!,可以定义递归函数`fact(n)`,当n为1时返回1,否则返回`n * fact(n-1)`。 - **斐波那契数列**:递归地定义F(n)为F(n-1) + F(n-2),其中F(0) = 0,F(1)...

    C# 用递归的方式查找指定文件夹下的所有子目录

    在C#编程中,递归是一种强大的工具,常用于解决涉及层次结构或树形结构的问题,比如在文件系统中查找特定目录或文件。本话题主要关注如何使用递归方法遍历指定文件夹及其所有子目录。我们将探讨以下几个关键知识点:...

    二分搜索的递归和非递归实现

    在二分搜索中,递归实现通常分为以下几步: 1. 定义递归函数,接收数组、目标值、左边界和右边界作为参数。 2. 检查左边界是否大于右边界,如果是,表示已经搜索完所有可能的位置,返回-1(通常表示未找到目标值)...

    递归下降分析法

    在递归下降分析中,有几种关键的函数类型: 1. **主解析函数**:通常对应文法的起始符号,它启动整个解析过程。 2. **辅助函数**:对应文法中的其他非终结符,它们被主解析函数或其他辅助函数调用。 3. **终端处理...

    分页+递归显示分页+递归显示

    实现分页通常有两种方式:客户端分页和服务器端分页。客户端分页是在浏览器端进行,仅加载用户当前查看的页面数据;服务器端分页则是在服务器端完成,返回用户请求的特定页数据。 递归显示: 递归是一种编程技术,...

    递归代码的写法

    对于二叉树,我们可以实现以下几种递归遍历方法: 1. **前序遍历**:首先访问根节点,然后递归遍历左子树,最后遍历右子树。 2. **中序遍历**:首先递归遍历左子树,然后访问根节点,最后遍历右子树。对于二叉排序...

    递归的解决最近问题

    根据给定的信息,本文将详细解析递归在C语言中的应用及其实现方式,并通过一个具体实例来深入探讨递归的思想和技术要点。 ### 一、递归的基本概念 递归是一种解决问题的方法,它通过调用自身来求解问题。递归通常...

    java详细讲解递归

    ### Java中的递归详解 ...综上所述,递归是一种强大的编程技术,能够帮助我们以简洁高效的方式解决许多问题。然而,在实际应用中,也需要根据具体情况选择合适的算法,并注意递归带来的潜在问题。

    递归算法事例及理论说明

    递归算法是一种编程技术,它通过函数或子过程直接或间接地调用自身来解决问题。在计算机科学中,递归通常用于简化复杂问题的解决,因为它可以使算法的描述更为简洁且易于理解。递归算法的核心在于将大问题分解为规模...

    易语言源码递归算法2.rar

    在易语言中,可以通过尾递归优化、记忆化(存储已计算过的子问题结果)等方式提高递归算法的性能。 6. **应用示例**:递归算法在易语言中可以应用于多种场景,如: - **斐波那契序列**:计算斐波那契数列的第n项,...

    递归-----动态树实现递归

    总的来说,递归是理解和操作动态树的重要工具,它提供了一种简洁、清晰的解决问题的方式。无论是遍历、搜索、构造还是修改树结构,递归都能发挥关键作用。在实际编程中,掌握递归的使用技巧,尤其是应用于动态树,...

    经典算法之递归

    在编程领域,递归是一种强大的思维方式,它通过函数或方法自我调用来解决复杂问题。递归的核心在于将大问题分解为相同或相似的小问题,并通过解决问题的子集来解决整个问题。这种技术广泛应用于数据结构(如树和图的...

    java培训知识-递归

    递归是一种重要的编程概念,尤其在Java这样的面向对象语言中,它被广泛应用于解决各种复杂问题。递归指的是一个函数或方法在其定义中调用自身的过程。这种技术源自数学和计算机科学,它允许通过简化问题的规模来解决...

    递归递推的步骤

    递归递推是一种在计算机科学和编程中广泛使用的解决问题的方法,尤其在算法设计和数据结构中扮演着重要角色。在C++中实现递归递推,通常涉及以下几个关键步骤: 1. **定义基本条件**:首先,我们需要确定递归过程的...

Global site tag (gtag.js) - Google Analytics