Java方法递归调用实例解析

网友投稿 251 2022-12-15


Java方法递归调用实例解析

这篇文章主要介绍了java方法递归调用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

/*

关于方法的递归调用

1、什么是递归?

-方法自身调用自身

a(){

a(){

}

}

2、递归是很耗费栈内存的,递归算法可以不用的时候尽量不用

3、一下程序运行http://的时候发生了这样一个错误【不是异常,是错误Error】:

java.lang.StackOverflowErroe

栈内存溢出错误。

错误放生无法挽回,只有一个结果,就是JVM停止工作

4、递归必须有结束条件,没有结束条件一定会发生栈内存溢出错误

5、递归即使有了结束条件,即使结束条件是正确的,也可能会发生栈内存溢出错误,

因为递归的太深了,栈内存被占满。

注意:

递归如果可以不使用,尽量不使用。

但是有些情况下,该功能的实现必须一览递归实现,比如 目录拷贝

*/

public class Method01{

// 主方法

public static void main(String[] args){

doSome();

}

// 调用doSome方法

// 以下的代码片段虽然只有一份

// 但是可以被重复的调用,并且只要调用doSome方法就会在栈内存中开辟一块所属的内存空间,

public static void doSome(){

System.out.println("doSome begin!");

doSome();/HqOBUPcq/这行代码不结束,下一行代码是不能执行的

System.out.println("doSome over!");

}

}

/*

不使用递归计算1-N的求和【可以不用递归,尽量不用递归】

*/

public class Method01{

// 主方法

public static void main(String[] args){

// 计算1-4的和

// int n = 4;

// int sum = 0;

// for(int i=1;i<=n;i++){

// sum += i;

// }

// System.out.println(sum);

// 直接调用方法即可

int n = 4;

int resultVal=sum(n);

System.out.println(resultVal);

}

// 单独定义一个方法,这是一个独立的功能,可以完成1-N的求和

public static int sum(int n){

intHqOBUPcq result = 0;

for(int i=1;i<=n;i++){

result+=i;

}

return result;

}

}

/*

使用递归计算1-N的和

*/

public class Method01{

// 主方法

public static void main(String[] args){

// 1-4的和

int n = 4;

int retValue = sum(n);

System.out.println(retValue);

}

HqOBUPcq public static int sum(int n){

// 4+3+2+1

if(n == 1){

return 1;

}

return n + sum(n-1);

}

}

/*

先不使用递归计算N的阶乘

5的阶乘:

5*4*3*2*1

*/

public class Method01{

// 主方法

public static void main(String[] args){

int n = 5;

int retValue = method(n);

System.out.println(retValue);//120

}

public static int method(int n){

int result = 1;

for(int i=n;i>0;i--){

result *= i;

}

return result;

}

}

/*

使用递归计算N的阶乘

5的阶乘:

5*4*3*2*1

*/

public class Method01{

// 主方法

public static void main(String[] args){

int n = 5;

int retValue = method(n);

System.out.println(retValue);//120

}

public static int method(int n){

if(n==1){

return 1;

}

return n*=method(n-=1);

}

}

递归内存分析:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot开发扩展springmvc实现解析
下一篇:深入解析Jdk8中Stream流的使用让你脱离for循环
相关文章

 发表评论

暂时没有评论,来抢沙发吧~