V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  pweng286  ›  全部回复第 1 页 / 共 3 页
回复总数  44
1  2  3  
3 小时 28 分钟前
回复了 n0bug 创建的主题 问与答 请问这两种写法为什么结果不一样?
@zapper 好的
5 小时 41 分钟前
回复了 sikuu2al 创建的主题 问与答 表弟沉迷网赌怎么办
赌狗戒不掉的
他手上绝对不能有任何钱,饭钱都得没收
5 小时 42 分钟前
回复了 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 ,后续的递归就不会继续进行,可能导致遗漏重要的判断逻辑,从而造成错误。
因此,如果你的递归逻辑需要检查所有的方向,那么你应该使用第一种写法,逐个递归调用每个方向。
12 小时 58 分钟前
回复了 HK560 创建的主题 硬件 9800X3D 史上最强游戏 CPU,部分游戏性能帧数超 14900k 多达 70%
幽默 U9 开倒车.
2.
正常
高中上学一节课还得开小差呢
上班又没有老师看着
19 天前
回复了 yhm2046 创建的主题 iPhone 求现在 24 年 10 月注册美区 apple id 的办法?
我很久之前用 gmail 注册过一个,后来想起来了用虚拟卡绑定了付款方式.现在能正常用
醒醒
房地产不行了以后地方财政连公共服务都快保证不了了,公务员,国企,医院,公交司机工资有多少断交的可以查查
钱从哪来呢.
23 天前
回复了 Leslie5205912 创建的主题 买买买 双 11 4k 屏幕推荐(副屏)
@colinzhao #3 不打游戏应该都带的动
你在应用商店随便下载个输入法都有这个功能
24 天前
回复了 hapsinge 创建的主题 Apple iPhone 的 oled 屏幕真的“伤眼”吗?
看小说时间长了眼花.
但大概率是因为我离得太近了.
25 天前
回复了 T1mmy 创建的主题 iPhone 60Hz 有一个 Promotion 没有的优势
这是否.
25 天前
回复了 JiHuGeek 创建的主题 生活 父亲失业了,应该给他生活费吗
你也说了不打钱他们只能啃馒头了大哥.
9k 太多了两三千起码保证生活吧.
完全没有这个困扰





因为我没有女朋友
30 天前
回复了 momo2023 创建的主题 MacBook Air 想买 macbook air,求建议
想试一下苹果系统买个二手 m1 的 macmini 就行了.
30 天前
回复了 ifane 创建的主题 iPhone 16 系有触控失灵的毛病么?
据说是因为相机那个按钮会导致误触
冲突了.
卸载重装试试
貌似有那种 1 进 n 出的设备(不知道叫啥了)
闹闹试试,往抖音微博发发
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2920 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 14:43 · PVG 22:43 · LAX 06:43 · JFK 09:43
Developed with CodeLauncher
♥ Do have faith in what you're doing.