用递归实现1到100的和,1到10的阶乘

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pyd1040201698/article/details/78167563

递归:方法定义中调用方法本身的现象
注意实现:
1.递归一定要有出口,否则就是死递归 StackOverflowError
2.递归的次数不能过多,否则也会出现死递归
特殊事项:构造方法不可以递归定义

	举例:
		从前有座山,山上有座庙,庙里有个老和尚,老和尚再给小和尚讲故事,故事是:
		从前有座山,山上有座庙,庙里有个老和尚,老和尚再给小和尚讲故事,故事是:
		从前有座山,山上有座庙,庙里有个老和尚,老和尚再给小和尚讲故事,故事是:

代码块

递归1-100的和

public class DiguiHe{
	
	public static void main(String[] args) {
		System.out.println("递归1-100和:"+dghe(5));
		System.out.println("递归1-100和:"+fdghe(5));
	}
	
	/**
	 * 递归1-100和
	 * @Author Mr.Peng
	 */
	private static int dghe(int i) {
		/**
		 * 这里以5为例:
		 * 5+dghe(4)=5+4+dghe(3)=5+4+3+dghe(2)+5+4+3+2+dghe(1)=5+4+3+2+1
		 * 当dghe(1)走 return 1;程序结束了
		 */
		if(i == 1){
			return 1;
		}else{
			return i+dghe(i-1);
		}
	}

	/**
	 * 非递归1-100和
	 * @Author Mr.Peng
	 */
	private static int fdghe(int i) {
		int sum = 0;
		int j = 1;
		while(j<=i){
			sum+=j;
			j++;
		}
		return sum;
	}
}

递归10的阶乘

public class DiguiChen{
	
	public static void main(String[] args) {
		System.out.println("递归阶乘:"+dgjc(10));
		System.out.println("非递归阶乘:"+fdgjc(10));
	}
	/**
	 * 递归阶乘
	 * @Author Mr.Peng
	 */
	private static int dgjc(int i) {
		//这里举例5的阶乘,10的阶乘同理:
		//5*dgjc(4)=5*4*dgjc(3)=5*4*3*dgjc(2)=5*4*3*2*dgjc(1)=5*4*3*2*1=120
		if(i == 1){
			return 1;
		}else{
			return i*dgjc(i-1);
		}
	}
	/**
	 * 非递归阶乘
	 * @Author Mr.Peng
	 */
	private static int fdgjc(int i) {
		// TODO Auto-generated method stub
		int sum = 1;
		while(i>0){
			sum*=i;
			i--;
		}
		return sum;
	}
}

猜你喜欢

转载自blog.csdn.net/pyd1040201698/article/details/78167563
今日推荐