java经典算法-day2
哈喽,各位小伙伴们好,我是喵手。
一、前言
正值金九银十好时节,又到了刷算法题日。xdm,有空的大家一起来呀,空余时间,地铁时间等随时随地皆可,你可以不用实操,你只需要看题思考,完后有空coding就好呀。接下来我要开启我的刷题之旅啦,喜欢的小伙伴欢迎点赞关注哦。
二、题目描述:
题目1:
打印九九乘法表。
题目2:
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总对数为多少?
三、思路分析:
题1:打印九九乘法表。
- 首先我们要找九九乘法表的输出进行找规律,九九乘法表的第一行,输出1*1 = 1,就一列;
- 然后第二行是输出两列,以此类推,我们就固定了第一层循环就只需要i从1-9,总共就九行;
- 然后就是控制第二层嵌套,很明显,跟着第一层的i,i是几,列数就是几。
- 所以,很明显第二层j也是从1开始,j最大只能等于i,这样就能保证呈下走楼梯状。所以总结一下,就是一共需要两层循环。
- 然后就是进行里层不换行打印输出,但是进行新的外一轮循环,根据九九乘法表,是要换行,所以你就在你内层循环外再加上一句换行语句即可。
- 平常直接打印对不齐,我们只需要在内层打印语句的末端,加上
" \t"
(\t相当于tab),这样它就可以列对齐了。
题2:古典问题:假如兔子都不死,问每个月的兔子总对数为多少?
首先,看到这题,我们应该要有个思维,那就是找规律,可以自己先尝试枚举几个月出来,看看能否成总数上找到有何规律。
我现来,枚举看看,每个月兔子总对数分别如下。
- 第1个月兔子总对数为:1
- 第2个月兔子总对数为:1
- 第3个月兔子总对数为:2
- 第4个月兔子总对数为:3
- 第5个月兔子总对数为:5
- 第6个月兔子总对数为:8
- 第7个月兔子总对数为:13
- 第8个月兔子总对数为:21
- 第9个月兔子总对数为:34
- ...
仔细一看这每个月的兔子对数,这不就是典型的斐波那契数列问题啊[1,1,2,3,5,8,13,21,34...]
,很明显就是符合斐波那契数列。针对该问题,满足函数f(x+2) = f(x+1)+f(x)
。其中x表示当前月份,x+2表示当前月份的第二个月份,所以分析可得,直接一套递归带走。
四、算法实现:
题1AC代码:
实际控制台输出:
题2AC代码:
无非就是实现这个函数:f(x) = f(x-1)+f(x-2)【其中x>=3】;
需要注意的是,由于第一个月和第二个月兔子对数都不变,所以需要单独提前告知sum的值,枚举month=1与month=2的值即可,往后就直接自我递归调用计算。
五、总结:
综上第一题是经典题,考察的还是循环嵌套的使用,第二题就是数学问题,从你找到规律基本这道题就破了,很显然规律符合斐波那契数列,所以基本递归的思路可以很好地解决。
如果你有更好的解题思路或者想法,欢迎评论区留言告诉我哦,喵手感激不尽。
六、文末:
好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。
... ...
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
---------------------------------------------------------------------
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
---------------------------------------------------------------------