母牛的故事有一头母牛,它每年初生一头小母牛,每头小母牛从第四个年头起,每年年初也生一头小母牛,那么第二十年时

题目:有一头母牛,它每年初生一头小母牛,每头小母牛从第四个年头起,每年年初也生一头小母牛,那么第二十年时

奶牛的数量与年份的关系
年份 1 2 3 4

5

6 7
数量 1 2 3 4 6 9 13

先来看如何用手工方法来解决:第一年有一头,第二年有一头,以此类推,我们可以手工得到一个列表:其中母牛个体一列中m(n)表示岁数为n年的母牛有m头.由此列表我们可以看出f4 = f1 + f3 = 4; f5 = f2 + f4 = 6; f6 = f3 + f5 = 9; f7 = f4 + f6 = 13; ;因此我们可以归纳出:这是斐波那契数列的变形,可以采用迭代方法来解决,也可以使用递归函数解决

借鉴

到第五年由于第二年生成的一头小奶牛开始生产所以有6头奶牛,到第6年第二年小奶牛在生产一头奶牛,第三年的两头小奶牛生产2头小奶牛所以一共有9头奶牛,因此由表格可以看出从第五年开始奶牛的数量开始有规律,F(n) = F(n-1)+F(n-3), 即当年奶牛数量为前一年奶牛数量加上前三年奶牛数量

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  int n;
  while((n=in.nextInt())!=0){
  if(n>=1&&n<=4)
  System.out.println(n);
  else if(n>4){
  System.out.println(Fun(n));
}
}
}
  public static int Fun(int m){
    if(m==1)
      return 1;
    else if(m==2)
      return 2;
    else if(m==3)
      return 3;
    else if(m==4)
      return 4;
    else
      return Fun(m-1)+Fun(m-3);
}
}

你可能感兴趣的:(开发语言,java,开发语言)