什么是递归调用-自已调自己 什么是递归算法

/*
 * 递归:方法自已调用自己
 *      递归的分类:2种
 *         1.直接递归称为方法自身调用自己
 *         2.间接递归可以使用A方法调用B方法,B方法调用C方法,C方法再调用A方法
 *      注意事项:
 *         1.递归一定要有条件限定,保证能停止下来,否则会发生栈内存溢出
 *         2.在递归虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出
 *         2.构造方法,禁止递归
 *         学习视频分享:javacto.taobao.com
 */

 

递归:方法自已调用自己 案例

public class Test01 {

	public static void main(String[] args) {
		//a();
		b(1);
	}

	/**
	 * 在递归中虽然有限定条件,但是递归次数不能太多,否同也会发生栈内存溢出
	 * 11738  每次不一样
	 * 学习视频分享:javacto.taobao.com
	 * @param i
	 */
	private static void b(int i) {
		
		System.out.println(i);
		if(i==200000){
			return ;
		}
		
		b(++i);
	}

	/**
	 * 递归一定要有条件限定,保证能够停止下来,否则会发生
	 * Exception in thread "main" java.lang.StackOverflowError
	 * 学习视频分享:javacto.taobao.com
	 */
	private static void a() {
		System.out.println("a方法");
		a();
		
	}
	
	/**
	 * 构造方法禁止递归
	 *  编译错误,构造方法是创建对象使用的,一直递归会导致内存中有无数多个对象
	 *  学习视频分享:javacto.taobao.com
	 */
	public Test01(){
		//Test01();
	}
}

练习:使用递归计算1-n之间的和

/**
 * 练习:
 * 使用递归计算1-n之间的和
 */
public class Test02 {

	public static void main(String[] args) {
		int s = sum(100);
		System.out.println(s);
	}

	/**
	 * 定义一个方法,使用递归计算1-n之间的和
	 *  1+2+3+..n
	 *  n+(n-1) +(n-1)+..1;
	 *  已知 最大值n  最小值1
	 *  使用递归必需明确
	 *  	1.递归的结束条件  获取到1的时候结束
	 *  	2.递归的目标  获取下一个被加的数字(n-1)
	 *  
	 *  学习视频分享:javacto.taobao.com
	 */
	private static int sum(int n) {
		//获取到1的时候
		if(n==1){
			return 1;
		}
		//获取下一个被加的数字 (n-1)
		return n+sum(n-1);
	}
}

 

你可能感兴趣的:(JAVA基础,面试,Java综合,其它,精彩网文)