一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 637|回复: 9
收起左侧

[CareerCup] 文科生向文科生讲解递归递归(1)

[复制链接] |试试Instant~ |关注本帖
TonyJang 发表于 2014-9-20 09:45:05 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
本帖最后由 TonyJang 于 2014-9-20 13:02 编辑
  1.         public static LinkedList<Integer> sum2(LinkedList<Integer> list1, LinkedList<Integer> list2){
  2. int length1 = list1.size();
  3. int length2 = list2.size();        
  4. if(length1!=length2){
  5. LinkedList<Integer> shortList = length1>length2 ? list2:list1;
  6. for(int i = Math.abs(length1- length2); i>0; i--){
  7. shortList.addFirst(0);
  8. }        
  9. }        
  10. LinkedList<Integer> ret = new LinkedList<Integer>();
  11. int p= sumHelper(ret,list1,list2);
  12. if(p!=0)
  13. ret.addFirst(p);
  14. return ret;
  15. }
  16. private static int sumHelper(LinkedList<Integer> result,LinkedList<Integer> list1, LinkedList<Integer> list2){
  17. if(list1.isEmpty())
  18. return 0;
  19. int sum = list1.poll()+list2.poll()+sumHelper(result,list1,list2);
  20. result.addFirst(sum%10);
  21. return sum/10;
  22. }
复制代码
已1->4->6 + 2->7->9=4->2->5为例,

①sum=1+2+sumHelper(result,list1,list2);
②sum=4+7+sumHelper(result,list1,list2);
③sum=6+9+sumHelper(result,list1,list2);

之后list1为空,return 0;返回③,sum=15,result变成5,return 进位1,进入②

sum=4+7+1=12,result变成2,return进位1,进入①

sum=1+2+1=4......

文科生转CS,吐出老血啊,共勉吧


想问一下第五行,LinkedList<Integer> shortList = length1>length2 ? list2:list1;如果list1短一些,那么把list1的内容copy给shortlist,之后shortlist空余位置补0,这样会改变list1的值吗?如果list1或者list2不空位置补0,那么sumHelper(LinkedList<Integer> result,LinkedList<Integer> list1, LinkedList<Integer> list2)这个函数没意义啊

评分

1

查看全部评分

hylldxm 发表于 2014-9-20 10:35:51 | 显示全部楼层
敢转就值得佩服了
回复 支持 反对

使用道具 举报

birdor 发表于 2014-9-20 11:05:30 | 显示全部楼层
递归是个入栈出栈的过程,从栈的角度很容易理解的。
回复 支持 反对

使用道具 举报

 楼主| TonyJang 发表于 2014-9-20 12:12:20 | 显示全部楼层
想问一下第五行,LinkedList<Integer> shortList = length1>length2 ? list2:list1;如果list1短一些,那么把list1的内容copy给shortlist,之后shortlist空余位置补0,这样会改变list1的值吗?如果list1或者list2不空位置补0,那么sumHelper(LinkedList<Integer> result,LinkedList<Integer> list1, LinkedList<Integer> list2)这个函数没意义啊
回复 支持 反对

使用道具 举报

 楼主| TonyJang 发表于 2014-9-20 22:18:43 | 显示全部楼层

大神帮我解答一下问题呗
回复 支持 反对

使用道具 举报

readman 发表于 2014-9-20 22:49:00 | 显示全部楼层
TonyJang 发表于 2014-9-20 22:18
大神帮我解答一下问题呗

...发个git吧...
回复 支持 反对

使用道具 举报

 楼主| TonyJang 发表于 2014-9-21 10:04:35 | 显示全部楼层
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-8 16:13

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表