Java方法递归调用实例解析
这篇文章主要介绍了Java方法递归调用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
/* 关于方法的递归调用 1、什么是递归? -方法自身调用自身 a(){ a(){ } } 2、递归是很耗费栈内存的,递归算法可以不用的时候尽量不用 3、一下程序运行的时候发生了这样一个错误【不是异常,是错误Error】: java.lang.StackOverflowErroe 栈内存溢出错误。 错误放生无法挽回,只有一个结果,就是JVM停止工作 4、递归必须有结束条件,没有结束条件一定会发生栈内存溢出错误 5、递归即使有了结束条件,即使结束条件是正确的,也可能会发生栈内存溢出错误, 因为递归的太深了,栈内存被占满。 注意: 递归如果可以不使用,尽量不使用。 但是有些情况下,该功能的实现必须一览递归实现,比如目录拷贝 */ publicclassMethod01{ //主方法 publicstaticvoidmain(String[]args){ doSome(); } //调用doSome方法 //以下的代码片段虽然只有一份 //但是可以被重复的调用,并且只要调用doSome方法就会在栈内存中开辟一块所属的内存空间, publicstaticvoiddoSome(){ System.out.println("doSomebegin!"); doSome();//这行代码不结束,下一行代码是不能执行的 System.out.println("doSomeover!"); } }
/* 不使用递归计算1-N的求和【可以不用递归,尽量不用递归】 */ publicclassMethod01{ //主方法 publicstaticvoidmain(String[]args){ //计算1-4的和 //intn=4; //intsum=0; //for(inti=1;i<=n;i++){ //sum+=i; //} //System.out.println(sum); //直接调用方法即可 intn=4; intresultVal=sum(n); System.out.println(resultVal); } //单独定义一个方法,这是一个独立的功能,可以完成1-N的求和 publicstaticintsum(intn){ intresult=0; for(inti=1;i<=n;i++){ result+=i; } returnresult; } }
/* 使用递归计算1-N的和 */ publicclassMethod01{ //主方法 publicstaticvoidmain(String[]args){ //1-4的和 intn=4; intretValue=sum(n); System.out.println(retValue); } publicstaticintsum(intn){ //4+3+2+1 if(n==1){ return1; } returnn+sum(n-1); } }
/* 先不使用递归计算N的阶乘 5的阶乘: 5*4*3*2*1 */ publicclassMethod01{ //主方法 publicstaticvoidmain(String[]args){ intn=5; intretValue=method(n); System.out.println(retValue);//120 } publicstaticintmethod(intn){ intresult=1; for(inti=n;i>0;i--){ result*=i; } returnresult; } }
/* 使用递归计算N的阶乘 5的阶乘: 5*4*3*2*1 */ publicclassMethod01{ //主方法 publicstaticvoidmain(String[]args){ intn=5; intretValue=method(n); System.out.println(retValue);//120 } publicstaticintmethod(intn){ if(n==1){ return1; } returnn*=method(n-=1); } }
递归内存分析:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。