<
查看: 3661| 回复: 23
收起左侧

[树/链表/图] Recursive vs iterative 的选择

goodjob 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   45
100%
0%
0

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
大家面试的时候都是怎么选择这两种方法
Recursive代码精简而且会减少bug
Iterative代码量多,甚至有些题目的iterative又长又臭
如果写了recursive,面试官要求再写iterative就更费时间了
所以大家面试的时候怎么处理,一定要写出iterative的方法才算最优解吗

评分

参与人数 1大米 +2 收起 理由
14417335 + 2 给你点个赞!

查看全部评分


上一篇:[LC周赛赛后发布会] Weekly Contest 377
下一篇:[LC周赛赛后发布会] Weekly Contest 378
nyufufu 2023-12-27 11:24:28 来自APP | 显示全部楼层
本楼:   👍  3
100%
0%
0   👎
全局:   1784
93%
7%
126
newtaizi 发表于 2023-12-26 10:51:55
iterative当然更好。速度更快,而且recursive依赖程序运行的那个栈,一旦深了就stack overflow。
递归这么可怕会栈溢出,为什么现代编程还那么常用递归?我搞竞赛那么多年也没见过几道一定要遍历不能递归因为会溢出的毒瘤题。栈溢出是可能发生的,但是现实中很难有这种情况,除非面试题考察的点就是这个。解决方法也极其简单,手动维护一个函数调用 stack 就可以了。除非是专门考察这个知识点,否则能递归的题没必要遍历。

补充内容 (2023-12-27 11:25 +08:00):
也就 leetcode 这种无聊的网站整天搞这种勾八没用的东西。递归和迭代是有通用的转换模板的,改写根本不用动脑子,有什么意义

评分

参与人数 2大米 +5 收起 理由
gu4p + 2 给你点个赞!
14417335 + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

qlxf 2023-12-27 00:49:43 | 显示全部楼层
本楼:   👍  3
100%
0%
0   👎
全局:   44398
97%
3%
1271
我觉得如果一个题目2种方法都可行的话,你可以先说说思路,然后问问面试官的意见。
一般来说,面试官会告诉你,如果他有任何的偏好的。

评分

参与人数 2大米 +3 收起 理由
gu4p + 2 很有用的信息!
14417335 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

本楼:   👍  2
100%
0%
0   👎
全局:   25
100%
0%
0
微信用户_0bdd7f5 发表于 2023-12-26 22:34:14
我感觉作为面试官希望你写iterate, 因为面试官肯定要问你时间复杂度, 你要是用了不常用的解法,他就需要想更多才知道你说的对不对。 通常感觉recursiv
然后我就没法提示candidate,只能记一笔candidate说错了。 而经过heavy提示答对比没有答对终归是好一点。而我肯定不会在note里写我不知道怎么提示他, (毕竟就算写了对我来说来说也不是大问题,大不了再来一轮面试官training)

评分

参与人数 1大米 +1 收起 理由
14417335 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

nyufufu 2023-12-26 18:54:20 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   1784
93%
7%
126
正常面试官会强迫 recursive 改成 iterate?
可以背 recursive 改成 iterate 的通用模板,无非就是模拟栈。当然代码会比较丑一点。
回复

使用道具 举报

newtaizi 2023-12-26 19:02:28 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   5825
88%
12%
814
recursive 改成 iterate 怎么就不正常了?

你五分钟就把题用最简单但不是最优的方式写完了,接下来显而易见的他只能让你follow up一下改iterate了。不然呢?跟你唠半小时的嗑?

评分

参与人数 1大米 +1 收起 理由
14417335 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

nyufufu 2023-12-26 23:10:04 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   1784
93%
7%
126
newtaizi 发表于 2023-12-26 03:02:28
recursive 改成 iterate 怎么就不正常了?

你五分钟就把题用最简单但不是最优的方式写完了,接下来显而易见的他只能让你follow up一下
剩下的时间讨论更优的做法啊。你不会是说 iterative 的解法比 recursive 更好吧?
回复

使用道具 举报

taucross 2023-12-27 00:43:25 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   25
100%
0%
0
如果问题本质是个recursive的问题,那recursive解法是最自然的,而且更精简。能用recursive的必然优先用啊。

评分

参与人数 1大米 +1 收起 理由
14417335 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

小黑屋881 2023-12-27 00:51:52 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   1894
92%
8%
159
有时候还有时间,让你换种写法很正常,我也会这么问
回复

使用道具 举报

柯基101 2023-12-27 02:33:34 来自APP | 显示全部楼层
本楼:   👍  2
67%
33%
1   👎
全局:   13870
92%
8%
1210
taucross 发表于 2023-12-26 08:43:25
如果问题本质是个recursive的问题,那recursive解法是最自然的,而且更精简。能用recursive的必然优先用啊。
某些recursive的问题用recursive写会有栈溢出的隐患
回复

使用道具 举报

newtaizi 2023-12-27 02:51:55 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   5825
88%
12%
814
nyufufu 发表于 2023-12-26 07:10
剩下的时间讨论更优的做法啊。你不会是说 iterative 的解法比 recursive 更好吧?

iterative当然更好。速度更快,而且recursive依赖程序运行的那个栈,一旦深了就stack overflow。
回复

使用道具 举报

LeChauxDeFonds 2023-12-27 04:18:43 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   410
98%
2%
10
把 dynamic programming 搞熟?我感觉所有 iterative 都可以用 dp 很清晰地写出来,而且 dp 一般都是能让面试官满意的解法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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