算法学习Day1 台阶问题 牛生牛问题 数字N的M次方问题

/**
* Created by H1871 on 2018/7/18.
*/
public class Day1 {

//有N阶台阶,每一次只能走1阶或者两阶
public static int jieti(int n){
    if( n<1){
        return  0;
    }
    if (n==1 || n==2){
        return n;
    }
    return jieti(n-1)+jieti(n-2);
}

public  static  int niu1(int year ){
  //现在有1头成熟的牛,第二年可以生小牛。
    // 小牛长大后第四年就能生小牛,也就是小牛等三年就能有小牛
    //假设牛不死,N年之后有多牛?
    if(year <1){
        return 0;
    }
    if(year ==1 || year ==2 || year ==3){
        return year ;
    }
     return niu1( year-1)+ niu1(year-3);
      //因为第n年的牛=n-1年的总数加上成熟的牛生的小牛,而成熟牛的数量就是N-3年的总数

}


//补充问题 如何快速的求出10的75次方
//75的二进制是1001011  故10的75次方 = 10的64次方 * 10的8次方  * 10的2次方  * 10的一次方
static int ex2(int n, int m) {
    int pingFangShu = n; //n 的 1 次方
    int result = 1;
    while (m != 0) {
        //遇1累乘现在的幂
        if ((m & 1) != 0)
            result *= pingFangShu;
        //每移位一次,幂累乘方一次
        pingFangShu = pingFangShu * pingFangShu;
        //右移一位
        m >>= 1;
    }
    return result;
}



public static void main(String[] args) {
    System.out.println(jieti(3));
    System.out.println(niu1(6));
    System.out.println(ex2(3,4));
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值