7.15

递归分为两种:

直接递归:方法自身调用自己。
间接递归:A方法调用B方法,B方法调用C方法,C方法再调用A方法。
3、注意事项
递归一定要有条件限定,保证递归能够停止下来,否则会形成死循环并发生栈内存溢出(StackOverflowError)。
递归中虽然限定了停止下来的条件,但是递归次数不能太多,否则也会发生栈内存溢出。
禁止构造方法递归。

public class AddRecursion {
public static void main(String[] args) {
System.out.println(sum(100));
}

public static int sum(int n) {
if (n == 1) {
return 1;
} else {
return n + sum(n - 1);
}
}

练习:使用递归计算10的阶乘
* 递归练习:使用递归计算10!阶乘(1*2*3*4*...*10)的值
public class FactorialRecursion {
public static void main(String[] args) {
System.out.println(Factorial(10));
}
public static int Factorial(int n){
if (n==1){
return 1;
}else{
return n*Factorial(n-1);
}
}
}

三、递归的应用
1、快速排序
从数列中挑出一个元素,称为 “基准值”;
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区操作;
使用递归把小于基准值元素的子数列和大于基准值元素的子数列排序;

posted @   new菜鸟  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示