V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  pweng286  ›  全部回复第 46 页 / 共 48 页
回复总数  944
1 ... 38  39  40  41  42  43  44  45  46  47 ... 48  
2024 年 11 月 7 日
回复了 n0bug 创建的主题 问与答 请问这两种写法为什么结果不一样?
@zapper 好的
2024 年 11 月 7 日
回复了 n0bug 创建的主题 问与答 请问这两种写法为什么结果不一样?
AI
关键区别:
递归调用顺序:

在第一段代码中,foo 被分别递归调用并赋值给 ret1, ret2, ret3, ret4 。这意味着所有的递归调用会 按顺序 执行,一个接一个。如果在某个递归过程中返回了 false ,其余的递归调用仍然会继续执行,但最终的返回值是 ret1 && ret2 && ret3 && ret4 ,即它会检查所有递归的结果。

在第二段代码中,所有的递归调用都在 一个单一的布尔表达式中同时执行。这意味着 foo(i+1, j) && foo(i-1, j) && foo(i, j+1) && foo(i, j-1) 会在一开始就 并行执行(实际上是按照顺序依赖 && 操作符的短路性质)。短路运算意味着如果第一个调用(例如 foo(i+1, j))返回 false ,那么剩下的递归调用会被 立即跳过,并且整个表达式会立刻返回 false ,不会继续执行其他递归调用。

短路特性:

在第二段代码中,&& 是一个短路操作符,也就是说,当第一个 foo(i+1, j) 返回 false 时,后续的 foo(i-1, j), foo(i, j+1), foo(i, j-1) 会 被跳过,因此可能会导致在某些情况下,代码没有完整地执行所有递归调用,可能会错过一些重要的逻辑判断。

而在第一段代码中,由于每个递归调用是逐个进行的,即使某些调用的返回值是 false ,后续的递归调用仍会被执行,所以你可以确保每次递归的每一个方向都被检查。

为什么第二种写法会错误:
如果你的递归逻辑依赖于每个方向( i+1, i-1, j+1, j-1 )的返回值,那么在第二段代码中,短路机制 可能导致部分方向没有被检查到。例如:

假设 foo(i+1, j) 返回 false ,根据短路原则,后面的 foo(i-1, j)、foo(i, j+1)、foo(i, j-1) 就不会执行了。因此,可能漏掉了一些重要的判断,导致最终结果不正确。
而在第一种写法中,虽然某个方向可能返回 false ,但是所有的递归都会执行,确保每个方向都被遍历,从而保证递归的正确性。

总结:
第一段代码按顺序递归调用每个方向,确保所有的递归都被执行,因此不会错过任何重要的检查。
第二段代码在使用短路操作符时,一旦某个递归返回 false ,后续的递归就不会继续进行,可能导致遗漏重要的判断逻辑,从而造成错误。
因此,如果你的递归逻辑需要检查所有的方向,那么你应该使用第一种写法,逐个递归调用每个方向。
幽默 U9 开倒车.
2024 年 11 月 6 日
回复了 playerwhy 创建的主题 生活 问一下大家每月花呗(或者白条)平均会花费多少呢?
2.
正常
高中上学一节课还得开小差呢
上班又没有老师看着
2024 年 10 月 18 日
回复了 loopinfor 创建的主题 经济 假如有这么个政策,是不是可以解决当下的问题
醒醒
房地产不行了以后地方财政连公共服务都快保证不了了,公务员,国企,医院,公交司机工资有多少断交的可以查查
钱从哪来呢.
2024 年 10 月 15 日
回复了 Leslie5205912 创建的主题 买买买 双 11 4k 屏幕推荐(副屏)
@colinzhao #3 不打游戏应该都带的动
你在应用商店随便下载个输入法都有这个功能
2024 年 10 月 14 日
回复了 hapsinge 创建的主题 Apple iPhone 的 oled 屏幕真的“伤眼”吗?
看小说时间长了眼花.
但大概率是因为我离得太近了.
2024 年 10 月 13 日
回复了 T1mmy 创建的主题 iPhone 60Hz 有一个 Promotion 没有的优势
这是否.
2024 年 10 月 13 日
回复了 JiHuGeek 创建的主题 生活 父亲失业了,应该给他生活费吗
你也说了不打钱他们只能啃馒头了大哥.
9k 太多了两三千起码保证生活吧.
2024 年 10 月 10 日
回复了 yongp 创建的主题 问与答 想问各位一个问题,是否会介意女友比自己收入低?
完全没有这个困扰





因为我没有女朋友
2024 年 10 月 8 日
回复了 momo2023 创建的主题 MacBook Air 想买 macbook air,求建议
想试一下苹果系统买个二手 m1 的 macmini 就行了.
2024 年 10 月 8 日
回复了 ifane 创建的主题 iPhone 16 系有触控失灵的毛病么?
据说是因为相机那个按钮会导致误触
冲突了.
卸载重装试试
2024 年 9 月 27 日
回复了 mir2 创建的主题 问与答 多个安卓大屏幕, 55 寸,如何能实现控制同时播放内容
貌似有那种 1 进 n 出的设备(不知道叫啥了)
1 ... 38  39  40  41  42  43  44  45  46  47 ... 48  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2456 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 01:05 · PVG 09:05 · LAX 18:05 · JFK 21:05
♥ Do have faith in what you're doing.