短路递归
回答
你想要return !i || foo(--i)
。
请注意||
是短期循环。这意味着只有当表达式的结果未知时,评估(从左到右执行)才会继续。所以按照我写的方式,i
为零将阻止递归。如果在同一个变量出现在多个子表达式中并且它的值在一些子表达式中发生了变化,那么在计算表达式时需要非常小心,我的!i
和--i
可能会得到我遇到了麻烦:我不太远离未定义的行为事实上,事实证明,我的代码是完全安全的,因为||
是序列点,并且||
的评估顺序是明确定义的。但要小心。)
也许但问题不是那么清楚恕我直言。我会留下这个答案,因为它解决了评估和递归阻塞问题。 – Bathsheba 2014-09-05 12:33:57
@Debasish易于修复:'return!i && foo( - i);' – user4011744 2014-09-05 12:35:31
从你已编码foo
永远不会返回,因为它会co ntinuosly继续减少i
并递归。您需要foo
内的支票,当您将i
作为0
时,它将返回您想要的任何东西。
@DebasishJana这是问题的复制粘贴而不是替代答案 – 2014-09-05 12:31:26
人们downvoting,请让我知道什么是错的答案。 – 2014-09-05 12:47:16
- 1. 最短路径算法递归
- 2. 短路运营商和尾递归
- 3. C++递归找到水平圆柱体中的最短路径(递归问题)
- 4. 路径递归
- 5. 递归Expressjs路由
- 6. T-SQL递归CTE,需要长的路径缩短结果
- 7. 使用ubergraph的最短路径clojure的递归函数
- 8. SQL - postgres - 图中的最短路径 - 递归
- 9. 方案提前“短路回归”?
- 10. 短时间后递归循环停止
- 11. 递归地逆转一个短语
- 12. libsass的递归路径
- 13. PHP递归目录路径
- 14. Rails中的递归路线
- 15. 递归查找路径
- 16. 递归查找路径
- 17. 节点 - 快递 - 递归路线
- 18. Java - SubSet和递归递归递归图
- 19. 传递参数时需要短路
- 20. 递归路径发现问题
- 21. 在树递归期间保存路径
- 22. NSMetaDataQuery,将setSearchScope路径设置为递归?
- 23. Python中的道路计算(递归)
- 24. 使用FileInputFormat.addInputPaths递归添加HDFS路径
- 25. R递归函数或回路循环
- 26. postgres中的递归路径查找
- 27. 建立一个“路径”用XSLT递归
- 28. Python分割路径递归地
- 29. angularjs递归树与路径或深度
- 30. 递归SQL来查找关键路径?
'||'是一个布尔表达式,所以不是你想要的。但是这是行不通的,因为在有机会知道它是否应该退出之前,你总是调用'foo'。 – crashmstr 2014-09-05 12:23:43
你想要做的是什么? – Kieveli 2014-09-05 12:26:14
先试着在纸上做,然后你会发现它不起作用。 – 2014-09-05 12:26:56