短路遞歸
回答
你想要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