是否有可能計算沒有變量的遞歸深度?統計遞歸調用無變量
-5
A
回答
1
1
,
Thread.currentThread().getStackTrace()
可以用於確定呼叫的深度。遞歸調用的數量是堆棧長度和第一幀的位置之間的差異。
或拋出異常,然後從最頂層的功能與檢索堆棧:
Throwable.getStackTrace()
返回堆棧跟蹤元件的陣列,每個代表一個堆棧幀。數組的第零個元素(假定數組的長度不爲零)表示堆棧的頂部,這是序列中最後一個方法調用。通常,這是創建和拋出此throwable的關鍵點。數組的最後一個元素(假設數組的長度不爲零)代表堆棧的底部,這是序列中第一個方法調用。
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Throwable.html
0
你提的問題是非常模糊的,所以我做了幾個假設:
- 通過你的意思是「遞歸深度」
- 「遞歸調用數」該函數的原始調用者想知道深度,所以遞歸方法返回它
- 「無變量」,這意味着你甚至不能使用局部變量來跟蹤部門^ h
所以,如果你在一些隨機的方法和你打電話給你的遞歸函數:
public void randomMethod() {
Something somethingToRecurseOn = ... ;
int depth = recurse(somethingToRecurseOn);
}
這是我的解決方案的預期使用。這裏的recurse
方法:
public int recurse(Something s) {
Something subS = s.getSubS();
if (subS == null) { // Exit condition
return 1;
}
// Do something with subS
return recurse(subS) + 1;
}
您深度融入你的函數的返回值,取1的深度爲你的退出條件。
這是一個面試問題,我過去問,你必須返回一個遞推數列元素的數量實際上是相關的,簽名是:
public int collatz(int n)
哪裏n
是你要操作的數字來找到序列的下一個數字,它停在1處。如果它是用遞歸而不是迭代實現的,它實質上返回遞歸深度。
相關問題
- 1. 遞歸調用中的局部變量
- 2. 遞歸變量
- 3. 計數遞歸調用
- 4. 無法在遞歸調用中設置參考變量
- 5. Javascript遞歸變量
- 6. 變量與遞歸
- 7. 遞歸PATH變量?
- 8. 統計啞變量爲因變量回歸
- 9. 遞歸和常量變量
- 10. 統計::迴歸不能運行單變量回歸?
- 11. 嘲笑時遞歸調用系統
- 12. 遞歸變量替換env.subst
- 13. python遞歸類變量
- 14. php遞歸全局變量?
- 15. 遞歸聲明變量 - python
- 16. Python遞歸變量狀態
- 17. 遞歸變量定義
- 18. 遞歸和變量值
- 19. 球拍遞歸變量? 。
- 20. R節省遞歸變量
- 21. 統計數據類型的非遞歸
- 22. 計劃和調用堆棧遞歸
- 23. 手動計數遞歸調用
- 24. 計數遞歸調用 - 河內塔
- 25. 使用遞歸計算列表數量?
- 26. 如何在遞歸函數體內使用計數器變量
- 27. 遞歸調用簽名不斷變化
- 28. 遞歸過程中的變量用法?
- 29. 使用遞歸沒有局部變量
- 30. Bash,用於遞歸的相同變量
你是什麼意思「遞歸調用次數」? – arshajii
使遞歸方法返回語句本身是遞歸計數 – gtgaxiola
如何計算某些內容而不實際計算?您將需要一個變量來存儲計數。 –