母牛的数量-暴力递归

package 算法初级;


/**
 * 
 * @title 母牛問題
 * @description 母牛每年生一只母牛,新出生的母牛三年后每年剩一只母牛,就N年后母牛的數量。
 * @thinking 1:A(1) 2: A,B(2) 3: A,B,C(3) 4:A,B,C,D(4) 5:A,B,C,D,E,F(6)
 *           6:A,B,C,D,E,F,G,H,I(9) => f(n) = f(n-1) +f(n-3)
 * @author xiaox
 * @data 2018年5月20日
 */
public class Cow {
// O(n)
public static int cowNum(int N) {
if (N < 1) {
return 0;
}
if (N < 4) {
return N;
}
return cowNum(N - 1) + cowNum(N - 3);


}


/**
* 如果每一个牛能过10年

* @param N
* @return
*/
public static int cowNum1(int N) {
if (N < 1) {
return 0;
}
if (N < 4) {
return N;
}
if (N <= 10) {
return cowNum1(N - 1) + cowNum1(N - 3);
} else {
return cowNum1(N - 1) - cowNum1(N - 10) + cowNum1(N - 3) - cowNum1(N - 10);
}


}


public static void main(String[] args) {
int years = 12;
for (int i = 1; i < 20; i++)
System.out.print(i + ": " + cowNum(i) + " ");
System.out.println();
System.out.println("11: " + cowNum1(12));
}


}

你可能感兴趣的:(算法笔记)