java1234开源博客系统
博客信息

Java面向对象-递归

发布时间:『 2016-08-27 18:06』  博客类别:Java核心基础  阅读(7432) 评论(3)

Java面向对象-递归


递归,就是程序调用自身,我们讲的是方法递归调用,也就是在方法里自己调用自己;


我们给出一个案例,求阶乘  1*2*3*...*(n-1)*n 


我们用非递归和递归方式分别实现下,大家可以比较下;


我们先用非递归方式 大家肯定会想到用循环实现,


上代码:

package com.java1234.chap03.sec03;

public class Demo03 {

	/**
	 * 非递归
	 * @param n
	 * @return
	 */
	static long notDiGui(int n){
		long result=1;
		for(int i=1;i<=n;i++){
			result=result*i;
		}
		return result;
	}
	
	
	
	public static void main(String[] args) {
		System.out.println(Demo03.notDiGui(5));
	}
}



递归的话 我们首先要找到规律 还有必须有一个出口;


我们来先说说规律 比如求5的阶乘


我们会发现规律 

n=5   F(n)=F(n-1)*5  即F(5)=F(4)*5

n=4   F(n)=F(n-1)*4  即F(4)=F(3)*4

n=3   F(n)=F(n-1)*3  即F(3)=F(2)*3

n=2   F(n)=F(n-1)*2  即F(2)=F(1)*2

n=1   1


上代码:

package com.java1234.chap03.sec03;

public class Demo03 {

	/**
	 * 递归方式
	 * @param n
	 * @return
	 */
	static long diGui(int n){
		if(n==1){
			return 1;
		}
		return diGui(n-1)*n;
	}
	
	
	public static void main(String[] args) {
		System.out.println(Demo03.diGui(5));
	}
}




关键字:   java     递归  
关注Java1234微信公众号
博主信息
Java1234_小锋
(知识改变命运,技术改变世界)
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有