递归应用(2) 乘方问题

/**
 * 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容