递归实现 :x的y次方

     计算机无法实现x的y次方,由

y =(x*x) (y/2)

来实现,依据此法,利用递归实现 x的y次方,在y为奇数的时候,提出一个x出来相乘,如下:

public class Power {
	
	static int xNum;
	public static void main(String[] args) throws IOException {
		
		int x,y;
		int count = 0;
		x = insert();
		y = insert();
		xNum = x;
		power(x,y,count);
	}

	private static void power(int x, int y, int count) {
		
		System.out.println("x值为:"+x+" y值为:"+y);
		if(y==1)
		{	
			if(count>0){
				for(int i=1;i<=count;i++){
					x = x*xNum;
				}
			}
			System.out.println("所求值为:"+x);
		}
		if(y>1)
		{ 
			
			//y为偶数的时候
			if(y%2==0)
			{	System.out.println(">>>>");
				power(x*x,y/2,count);
			}
			//y为奇数的时候
			if(y%2==1)
			{System.out.println("<<<<");
				power(x*x,(y-1)/2,count+1);
			}
		}
	}

	private static int insert() throws IOException {
		InputStreamReader in = new InputStreamReader(System.in);
		BufferedReader buffer = new BufferedReader(in);
		String s = buffer.readLine();
		return Integer.parseInt(s);
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值