[Java] 练习题001:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

【程序1】

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

斐波那契数列, Sn = Sn-1+Sn-2

[java]view plaincopy

print?
  1. import <a href="http://lib.csdn.net/base/javaee" class='replace_word' title="Java EE知识库" target='_blank' >Java</a>.util.*;
  2. public class RubbitTest{
  3. public static void main (String[] args) {
  4. long s1,s2;// 定义这个月和下个月兔子的数量
  5. s1 = 1; //第一个月为1对
  6. s2 = 1; //第二个月为1对
  7. int i=1; //定义一个控制变量
  8. int m; // 月份数
  9. Scanner in = new Scanner(System.in); //从控制台输入想要查看的月份
  10. System.out.println("请输入你想要查看的月数:");//输入提示
  11. m = in.nextInt();//输入的整数月份赋值给m
  12. //while循环
  13. while(true){
  14. //第一个月和第二个月兔子的数量都为1对
  15. if(i==1||i==2){
  16. System.out.println(i+" month: "+s1);
  17. i++; // 控制变量 i 加1
  18. }
  19. // i 大于3并且小于我们需要查看的月份
  20. else if(i<m){
  21. s1 = s1+s2;
  22. s2 = s1+s2;
  23. System.out.println(i+" month: "+s1);
  24. i++;//月份加1
  25. System.out.println(i+ " month: "+s2);
  26. i++; //朋份加1
  27. }else{
  28. break;//不符合条件就退出
  29. }
  30. }
  31. }
  32. }