短路遞歸
回答
你想要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. 使用ubergraph的最短路徑clojure的遞歸函數
- 7. 尋找最短路徑的遞歸方法
- 8. 方案提前「短路迴歸」?
- 9. Rails中的遞歸路線
- 10. PHP遞歸目錄路徑
- 11. libsass的遞歸路徑
- 12. Java - SubSet和遞歸遞歸遞歸圖
- 13. NSMetaDataQuery,將setSearchScope路徑設置爲遞歸?
- 14. nodejs express遞歸路由失敗(404)
- 15. 遞歸SQL來查找關鍵路徑?
- 16. 建立一個「路徑」用XSLT遞歸
- 17. PHP中的文件路徑和遞歸
- 18. asp.net mvc遞歸html遞歸
- 19. Java中的遞歸遞歸
- 20. 我如何遞歸遞歸?
- 21. 遞歸0s和1s遞歸
- 22. 歸檔到指定的路徑在非遞歸的Makefile
- 23. 遞歸
- 24. 遞歸
- 25. 遞歸
- 26. 遞歸
- 27. 遞歸/迭代麻煩,將單詞數組轉換成短語
- 28. 最短的迴文遞歸解決方案問題
- 29. MySQL短路或
- 30. Haskell短路(&&)
'||'是一個布爾表達式,所以不是你想要的。但是這是行不通的,因爲在有機會知道它是否應該退出之前,你總是調用'foo'。 – crashmstr 2014-09-05 12:23:43
你想要做的是什麼? – Kieveli 2014-09-05 12:26:14
先試着在紙上做,然後你會發現它不起作用。 – 2014-09-05 12:26:56