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

递归:方法定义中调用方法本身的现象
注意实现:
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;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值