當前位置:編程學習大全網 - 編程軟體 - 如何直接跳出深層遞歸,不是壹層壹層跳出呢?

如何直接跳出深層遞歸,不是壹層壹層跳出呢?

幾種方法:

1. 遞歸結束時 throw exception, 在頂層代碼 try catch

2. 把遞歸函數放到壹個獨立線程執行,在主線程做 condition wait,遞歸結束時notify下,然後直接退出線程。

3. setjmp + longjmp 本質上和異常差不多,只是用純C實現罷了

都是些奇技淫巧,壹般用不到?

這個得要壹些奇技淫巧,在高級語言的層面,我覺得沒有壹個通用的方法,並不推薦。

從原理上來說,函數調用的時候,返回地址是壓到棧裏的,按照先進後出,要壹層層取出來上層的返回地址。

exception也非常不推薦。?

講道理的話

對於這種情境, goto最簡潔。

遞歸。我才看清題目。

我想問的是,為啥有這種奇怪的需求。

應用場景能描述下嗎??

假設可以忽略各層遞歸的中間狀態!那麽使用遞歸的意義又何在直接用循環好了!

如果需要考慮遞歸的中間狀態!那麽為什麽要直接退到最外層?

實際工作中是要避免使用遞歸!因為遞歸都能拆成循環!遞歸效率太低!可以試壹試goto,合理的運用,可以節省很多代碼,也可以把復雜的邏輯簡單化。都說goto可怕,但是也沒有人說過,使用了goto以後,出現了什麽可怕的事情。這個問題有點意思。。。我見過很多程序員寫了個遞歸出不來了。。。哈哈哈哈。。。跑題了。。。用個全局變量判斷壹下可以麽?雖然不太喜歡全局變量。。。#include 以後用極詭異的兩個標準庫函數:setjmp()和longjmp()。人家是非本地跳轉,比goto不知道高到哪裏去了。

  • 上一篇:R語言基礎入門(6) slice根據索引按行操作數據
  • 下一篇:PLC 程式暫停用什麽指令 要詳細 最好有助記符
  • copyright 2024編程學習大全網