递归应用(2) 乘方问题

2017-04-23  本文已影响0人  BringNew
/**
 * Created by Luty on 2017/4/23.
 * 递归的应用:计算乘方
 */
public class Involution {
    public static int x=2;
    public static int y=8;

    public static void main(String[] args){
        System.out.println(power(x,y));
    }

    public static int power(int x,int y){
        boolean isOdd = true;
        int result = 1;
        if (y==1){
            return x;
        }
        if(y%2 == 1){
            y=y+1;
            isOdd = false;
        }
        result = power(x*x,y/2);
        return isOdd ? result : result/x;
    }
}

计算x的y次方:
1、如果y为1,直接返回x;
2、否则计算xx的y/2次方(如果y为偶数)
3、如果y为奇数,计算x
x的(y+1)/2次方,最后再/x

上一篇 下一篇

猜你喜欢

热点阅读