母牛的数量-暴力递归

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


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值