/**
* 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));
}
}