新手对java中递归的总结

/*
* 关于方法的递归调用
* 1.方法的递归调用就是方法自身调用自身.
* 2.以下程序因为递归没有结束的条件,所以一直压栈,没有弹栈,导致栈内存溢出错误!
* 所以递归必须有结束条件.
*
* 递归和我们的循环(迭代)本质上是等价的,只不过一个是代码的循环级别.
* 递归呢,本质也是一种循环,内循环.
* 无论示迭代还是递归,都满足三个条件.
* 1. 起始条件
* 2. 终止条件
* 3. 自身调用条件
*/

public class Recursion_1{
public static void main(String[] args){
int n = 5;
//调用方法完成1-N的求和
int reValue = method_0(n);
System.out.println( reValue ); //15
}
//该方法完成1-N的求和
//1+2+3+4+N....
public static int method_0(int n){
if(n==1){
return 1;
}else{
return n + method_0(n-1);

    }

  }

}

时间: 2025-01-22 06:58:27

新手对java中递归的总结的相关文章

java 中递归的实现 以及利用递归方法实现汉诺塔

今天说下java语言中比较常见的一种方法,递归方法. 递归的定义 简单来说递归的方法就是"自己调用自己",通过递归方法往往可以将一个大问题简单化,最终压缩到一个易于处理的程度.对于编程来说,每次递归都会减少数据量: java中递归的模式 每个递归函数的开头一定是判断递归结束条件是否满足的语句(一般是if语句):函数体一定至少有一句是"自己调用自己"的.每个递归函数一定有一个控制递归可以终结的变量(通常是作为函数的参数而存在).每次自己调用自己时,此变量会变化(一般是

Java中递归的优缺点,Java写一个递归遍历目录下面的所有文件包括子文件夹里边的文件。

题目: 遍历出aaa文件夹下的文件 首先分析思路: 1.首先判断这个文件夹是否为文件,通过isFile()函数可以判断是否为文件. 2.然后通过isDirectory判断是否为目录. 3.如果是目录就使用递归遍历目录 代码如下: 1 import java.io.File; 2 3 public class ZuoYe { 4 public static void main(String[] args) { 5 //创建file对象 6 File f=new File("d://新建文件夹&qu

Java中递归和迭代的区别

关于递归和迭代的博客一篇: http://blog.csdn.net/believejava/article/details/8423888 递归占用的资源较多,而且容易发生内存溢出,不易管理,推荐使用迭代 包的好处是:将有相似功能java文件放在同一个包下,易于使用管理 防止命名冲突 为protected类型的变量提供保护,使其对包外不暴露,只能在包内使用. .有一个问题是为啥主函数所在的java文件不能写包名,只能import包,否则老是报错.. 还有就是我现在为啥都不需要在配置classp

064、Java中递归调用

01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String[] args) { System.out.println(sum(100)); // 1 - 100累加 } public static int sum(int num) { // 最大的内容 if (num == 1) { // 递归的结束调用 r

Java中的递归调用

Java中不合理的使用递归调用,可能会导致栈内存溢出,这点是需要注意的. java将为每个线程维护一个栈,栈里将为每个方法保存一个栈帧,栈帧代表了一个方法的运行状态. 也就是我们常说的方法栈.最后一个为当前运行的栈帧. 那么每一次方法调用会为新调用方法的生成一个栈帧,保存当前方法的栈帧状态,栈帧上下文切换,切换到最新的方法栈帧. 在递归和循环之间选择时,应该优先选择的是循环而非递归,特别是要避免深度的递归. 关于递归还需要了解的是尾递归调用,尾递归调用是可以被进行优化的. 尾调用指的是一个方法或

java中父类与子类, 不同的两个类中的因为构造函数由于递归调用导致栈溢出问题

1 /* 2 对于类中对成员变量的初始化和代码块中的代码全部都挪到了构造函数中, 3 并且是按照java源文件的初始化顺序依次对成员变量进行初始化的,而原构造函数中的代码则移到了构造函数的最后执行 4 */ 5 import static java.lang.System.out; 6 7 public class PersonDemo 8 { 9 public static void main(String[] args) 10 { 11 //*********测试父类与子类之间的循环调用的问

2018.3.31 java中的递归

java中的递归 1.概念 定义一个方法时,出现本方法调用本方法的过程,称之为递归 2.特点 必然有一个边界条件 使用递归代码往往更简洁,可读性强 3.什么时候使用递归 n的阶乘和n的累加定义 f(n) =1 f(n)=f(n)*f(n-1) 4.普通实现与递归实现的比较 普通实现 //计算5的阶乘 public class Demo { public static void main(String[] args) { int sum = 1; for (int i =5; i >=1; i--

java中不同类如何相互访问变量值(新手见解,可能很low)

最近在学基础java知识,这个是很常见的问题之一了,下面我要列出三种异类取值方法,当然不止这些,我选择了最简单的三种: 1.可以使用static静态变量,直接调用要访问类的属性和方法.因为 Java 中 static的特性: static 变量在类装载的时候进行初始化. 多个实例的 static变量会共享同一块内存区域. 1 public class A1 { 2 public static String str = "Hello World !"; 3 } 4 5 public cl

一看你就懂,超详细 java 中的 ClassLoader 详解

ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见.理解ClassLoader的加载机制,也有利于我们编写出更高效的代码.ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了.但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载.想想也是的,一次性加载那么多jar包那么多class,那内存不崩溃.本文的目的也是学习ClassLoader这种加载机制. 备注: