`
endual
  • 浏览: 3566356 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java递归的一个问题

 
阅读更多

据说比达格斯理论家,又称一群在必达格斯领导下工作的古希腊数学家,发现在数字序列

1,3,6,10,15,21 中有奇怪的联系

这个数列中第n项由第n-1项加n得到的。

效率问题

调用一个方法会有一定的额外开销。控制必须从这个调用的位子转移到这个方法的开始处。除次之外,传给这个方法的参数以及
这个方法返回的地址都要黑压入到一个内部的栈中。为的是这个方法可以访问参数值。知道返回到哪里去。

就这个问题来说,因为上述开销造成的结构,可能while方法执行速度比递归快。在此题中,递归的
代价是不大的。但是如果由于递归的存在,造成了太大规模的方法调用外,科恩能够会考虑消除递归。

另外一个低效率在系统内存空间存储所有的中间参数以及返回值,如果有大量的数据需要存储,这就会引起栈溢出了
人们常常采用递归,是因为它从概念上简化了问题,而不是因为它本质上更加有效。

 

 

package endual;

public class TriangleQuestion {

	
	/**
	 * 使用循环来求这个问题
	 * @param n
	 * @return
	 */
	public static int compute(int n) {
		
		int result = 0 ;
		
		for (int i=1; i<=n; i++) {
			
			result = result + i ;
			
		}
		

		return result ;
	}
	
	/**
	 * 使用递归来求解这个问题
	 * @param n
	 * @return
	 */
	public static int computeDiGui(int n) {
		
		int rs = 0 ;
		if (n>=1) {
		   rs =	n + TriangleQuestion.computeDiGui(n-1);
		}
		
	   return rs ;
	}
	
	
	/**
	 * 使用递归来求解这个问题
	 * @param n
	 * @return
	 */
	public static int computeDiGui2(int n) {
		
      if(n==1) {
    	  return 1 ;
    	  
      }
     
	   return n + TriangleQuestion.computeDiGui(n-1);
	} // end
	
}

 

 

 

 

测试类

package endual;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

        int res = TriangleQuestion.computeDiGui(4) ;
	    System.out.println(res);	
		
	}

}

 

分享到:
评论

相关推荐

    java 递归问题文档

    4. **终止条件**:每种递归问题都需要一个明确的终止条件,否则会导致无限递归,程序将无法停止。 5. **问题分解**:递归通常用于将大问题分解为更小的子问题。例如,计算阶乘可以用递归表示为`n! = n * (n-1)!`,...

    java递归树型结构通用数据库

    在Java递归树型结构通用数据库中,使用递归树型结构来存储部门信息,部门之间存在父子关系,每个部门都有一个唯一的ID,父部门的ID作为子部门的Parent ID,通过这种方式实现树型结构的部门管理。 2. 部门管理接口...

    java递归无限层级树

    在这个场景中,我们利用Java递归来表示一个树形结构,这种结构可以无限深入,每个节点可能包含子节点,也可能不包含。这通常在前端库如zTree、dtree等中作为后台数据来呈现多级菜单或分类。 首先,我们需要定义一个...

    Java递归算法构造JSON树形结构

    首先,我们需要定义一个 TreeBuilder 类,该类包含了构建树形结构的方法。 构建树形结构的方法使用递归算法将树形结构数据处理成 JSON 格式。首先,我们需要获取所有的根节点,然后将每个根节点的子节点构建出来,...

    Java递归算法(PPT+PDF+Word)

    Java递归算法是一种重要的编程技巧,它通过函数自身调用自身来解决问题。在Java中,递归主要用于解决那些可以通过简化规模来逐步逼近解决方案的问题。这种技术在数据结构(如树和图)、排序算法(如快速排序和归并...

    Java SE程序 递归 Java SE程序 递归

    Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE...

    Java递归例子.doc

    斐波那契级数是一个经典的递归问题。斐波那契级数是指一个数列,其中每个数字都是前两个数字的和。使用递归函数可以很容易地实现斐波那契级数的计算。Java 实现代码如下: ```java package org; import java.util....

    Java递归实现约瑟夫环应用问题

    约瑟夫环是一个数学的应用问题: ...网上看到很多实现,唯独Java实现不好找,自己构思了一下思路,用递归的方式实现了一个Java版的约瑟夫问题解决方案,代码简洁,思路清晰,请各位同行参考,欢迎交流。

    java递归实现 阶乘

    在这个实例中,我们将深入探讨如何使用Java递归实现阶乘计算,并以1到10的数字为例进行演示。 阶乘是一个数学概念,表示一个正整数n的所有小于等于n的正整数的乘积,通常表示为n!。例如,5的阶乘(5!)是5 × 4 × ...

    java递归

    Java递归是编程中的一个重要概念,它是指在函数或方法的定义中调用自身的过程。在Java中,递归通常用于解决那些可以被简化为规模更小的相同问题的复杂问题,例如遍历数据结构(如树和图)、计算阶乘、搜索算法等。...

    java递归的排序和查找

    Java递归是编程中一种强大的技术,主要用于解决那些可以分解为相同或类似子问题的问题。在Java中,递归主要应用于排序和查找算法,这两者都是数据处理的基础操作。本资料包聚焦于如何使用递归来实现这些算法,下面将...

    java递归算法

    java递归算法,java递归算法,java递归算法

    Digui.java 递归判断一个数是否在一个list里面

    Digui.java 递归判断一个数是否在一个list里面

    java 递归读取文件夹 读取文件 写文件

    java 递归读取文件夹 读取文件 写文件java 递归读取文件夹 读取文件 写文件java 递归读取文件夹 读取文件 写文件java 递归读取文件夹 读取文件 写文件java 递归读取文件夹 读取文件 写文件java 递归读取文件夹 读取...

    java 递归,全排列

    java 递归,abcd全排列,非常简单的。

    java 递归实现地图最短路径

    为了解决这个问题,可以考虑使用更高效的算法,例如Dijkstra算法或A*搜索算法,这些算法在处理大型图时具有更好的性能。Dijkstra算法保证找到最短路径,而A*算法则结合了启发式信息以更快地找到结果。这些算法虽然...

    Java递归将List转为树形结构Java递归将List转为树形结构

    Java递归将List转为树形结构 博客地址:https://blog.csdn.net/weixin_38500202/article/details/110456363

    Java递归获取匹配后缀的文件列表

    本文将详细解析标题为“Java递归获取匹配后缀的文件列表”的程序,它演示了如何使用Java来递归地查找指定路径下具有特定后缀的文件,并将它们的路径或名称存储在列表中。 首先,让我们了解递归的基本概念。递归是指...

    (java递归)删除文件

    在Java编程语言中,递归是一种强大的工具,用于解决那些可以分解为更小、相似子问题的任务。在本文中,我们将深入探讨如何使用递归方法在Java中删除文件,这通常涉及到目录及其包含的所有文件和子目录的删除。以下是...

    java递归例子

    java递归小例子,供初学者学习使用。九九递归

Global site tag (gtag.js) - Google Analytics