首页 / JAVA / Java方法递归(含详解)
Java方法递归(含详解)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java方法递归(含详解),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2208字,纯文字阅读大概需要4分钟。
内容图文
![Java方法递归(含详解)](/upload/InfoBanner/zyjiaocheng/714/5d81d0b9ba1e4a05a174ca06d2f06aa0.jpg)
方法递归
递归很熟悉了,我们再来谈谈递归。
定义: 一个方法在执行过程中调用自身, 就称为 “递归”.
递归,相当于数学上的 “数学归纳法”, 有一个起始条件, 然后有一个递推公式. 例如, 我们求 N! 起始条件: N = 1 的时候, N! 为 1. 这个起始条件相当于递归的结束条件.
递归公式: 求 N! , 直接不好求, 可以把问题转换成 N! => N * (N-1)
举例:
1.递归求 N 的阶乘
class FactorialSum{
public int factorialsum(int x){
if(x==1){
return 1;
}
return x*factorialsum(x-1);
}
}
这里分析一下这个吧:
class FactorialSum{
public int factorialsum(int x){
System.out.println("函数开始, x = " + x);
if(x==1){
return 1;
}
int ret=x*factorialsum(x-1);
System.out.println("函数结束, x = " + x + " ret = " + ret);
return ret;
}
}
运行结果:
如图:一层一层的深入,直到x值等于1,return ret的值就为1,
返回上一层,ret=21,返回ret=2;
返回上一层,ret=32,返回ret=6;
返回上一层,ret=46,返回ret=24;
返回最后一层,ret=524,返回ret=120;
2.递归求 1 + 2 + 3 + … + 10
class SequenceSum{
public int sequencesum(int x){
if(x==1){
return 1;
}
return x+sequencesum(x-1);
}
}
这样理解,终止条件为 1,如果到1了就返回上一层,那么;
10 !=1 进入10+sequencesum(9);
9 !=1 进入9+sequencesum(8);
.
.
.
1==1 返回上一层,并且sequensum(1)=1 (ps:最深层次);
开始返回上一层
1+2=3 返回上一层 ,并且sequensum(2)=3
.
.
.
10+sequencesum(9)=10+45=55
返回 55
3.按顺序打印一个数字的每一位
class SequencePrint{
public void sequenceprint(int x){
if(x>9){
sequenceprint(x/10);
}
System.out.println(x%10);
}
}
这里我输入的是1234;
1234>9 进入sequence(1234/10)=sequence(123);
123>9 进入sequence(123/10)=sequence(12);
12>9 进入sequence(12/10)=sequence(1);
1<9 Sysout(1%10) 即1,并返回上一层;
Sysout(12%10) 即2,并返回上一层;
Sysout(123%10) 即3,并返回上一层;
Sysout(1234%10) 即4,结束。
4.写一个递归方法,输入一个非负整数,返回组成它的数字之和.
class SequenceNumSum{
public int sequencenumsum(int x){
if(x<10){
return x;
}
return x%10+sequencenumsum(x/10);
}
}
很简单,输入1234
1234>10 return 4+sequencenumsum(123);
123>10 return 3+sequencenumsum(12);
12>10 return 2+sequencenumsum(1);
1<10 return 1;
返回 2+1 返回3;
返回 3+3 返回6;
返回 4+6 返回10 结束
递归有点像盗梦空间,必须一层一层的依次深入,回退的话也是一层一层的倒退,不能瞎**跳,梦中梦,递中递,好好理解吧!
内容总结
以上是互联网集市为您收集整理的Java方法递归(含详解)全部内容,希望文章能够帮你解决Java方法递归(含详解)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。