校招准备系列:每天一道算法题(3)
来源:互联网 发布:照片缩小软件手机 编辑:程序博客网 时间:2024/05/20 02:25
校招准备系列:每天一道算法题(3)
PS:今天的题目是来自java经典算法40题,希望自己的算法能力有一个长足的提高,以在校招中能找到一份好的工作!
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第4个月后每个月又生一对兔子,加入兔子都不死,问每个月的兔子总数为多少?
思路:对于这道古典问题,最直接的办法就是找规律,这里以20个月为参数,兔子的规律为数列:1 1 2 3 5 8 13 21。。。。。
很明显的我们可以使用递归的方法进行求解这个题,完成算法如下:
public static int sum(int x){ if (x==1||x==2) { return 1; }else { return sum(x-1)+sum(x-2); } }
写出完整的代码如下:
package chen.zhou.chous;/** * 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第4个月后每个月又生一对兔子,加入兔子 * 都不死,问每个月的兔子总数为多少 * @param args */public class GdwtTz { /* * 分析:兔子规律为1 1 2 3 5 8 13 21 */ public static void main(String[] args) { for (int i = 1; i <= 20; i++) { System.out.println(sum(i)); } } public static int sum(int x){ if (x==1||x==2) { return 1; }else { return sum(x-1)+sum(x-2); } }}
结束语:再次收割一枚offer,昨天间断是因为去办理入职手续之类的七七八八的,继续努力!!!
0 0
- 校招准备系列:每天一道算法题(3)
- 校招准备系列:每天一道算法题(1)
- 校招准备系列:每天一道算法题(2)
- 校招准备系列:每天一道算法题(4)
- 校招准备系列:每天一道算法题(15)-求1+2+3+...+n
- 校招准备系列:每天一道算法题(5)-两数之和
- 校招准备系列:每天一道算法题(6)-连续最大和
- 校招准备系列:每天一道算法题(7)-末尾0的个数
- 校招准备系列:每天一道算法题(8)-进制转换
- 校招准备系列:每天一道算法题(9)-单例
- 校招准备系列:每天一道算法题(10)-二维数组查找
- 校招准备系列:每天一道算法题(11)-替换空格
- 校招准备系列:每天一道算法题(12)-从尾到头打印链表
- 校招准备系列:每天一道算法题(13)-斐波那契数列
- 校招准备系列:每天一道算法题(14)-合并两个排序的链表
- 【每天一道算法题】
- 【每天一道算法题】
- 【每天一道算法题】
- 使用正则表达式校验字符串是否为数值(包含小数与负数)
- 关于CString初始化时提示字符串太大的解决
- block weak self strongself
- access转成sqlsever后无法添加数据,解决方法参考
- oracle process和session
- 校招准备系列:每天一道算法题(3)
- 面试题总结 —— JAVA高级工程师
- 每日三题-Day3-C(HDU 1257 最少拦截系统 最长上升子序列O(nlogn) )
- render_to_string() got an unexpected keyword argument 'context_instance'的解决方法
- 重温Volley源码(二):重试策略
- Collaborative Filtering 协同过滤小结 part-2:SVD
- Sublime Test 使用小结
- ajax不执行success回调而是执行error回调
- 目标跟踪最前沿算法资料收集