🚩一道笔试题
題目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
public static void main(String[] args) { //需要输入的月份: System.out.println("请输入的月份"); Scanner sc = new Scanner(System.in); int i = sc.nextInt(); int[] arr = new int[i]; //定义1和2月都只有1对兔子 arr[0] =arr[1] =1; //定义初始月份 int j =0; //try catch 增加稳定性 try { //不确定月份所以弄成while循环 while (true){ //前2月 if (j<2){ System.out.println("第"+(j+1)+"个月后有"+arr[j]+"对兔子."); //之后 } else if (j>=2){ arr[j]=arr[j-1]+arr[j-2]; System.out.println("第"+(j+1)+"个月后有"+arr[j]+"对兔子."); } j++; } } catch (Exception e) { System.err.println("到头辣!!"); } }
代码均写有注释了
以上是我的解法
应该还有更优的解法
甚至为了表示999个月,我想到用BigInteger,
具体参考:
https://blog.csdn.net/guomutian911/article/details/45030121
等半年后再回来重做一遍,
看看这梦开始的地方
参考解法:
public class Rubbit { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入月份"); int n = sc.nextInt(); System.out.println("在"+n+"月份有"+fun(n)+"对兔子"); } private static int fun(int n) { if (n == 1 || n == 2) // 表示第1月,第2月的对数 return 1; else return fun(n - 1) + fun(n - 2); // 3月之后该怎么算 } }
🚩一道面试题
2、访问修饰符public,private,protected,以及不写时的区别?
原文链接:https://blog.csdn.net/v123411739/article/details/115364158