[英]Removing Tail-Recursion from Method (Java)
我有這種方法:
private String computePerm(int iteration) {
if (iteration < n + 1) {
return Character.toString((char) (iteration + 48));
} else {
if (iteration % n == 0) {
return computePerm((iteration / n) - 1) + computePerm(((iteration - 1) % n + 1));
} else {
return computePerm(iteration / n) + computePerm(iteration % n);
}
}
}
它計算由單個廣度優先搜索遍歷引起的排列。 我正在用它來解決Post的對應問題 。 但是,我懷疑它是尾遞歸的,並且在某些情況下似乎會產生難看的開銷。
如何在保留方法行為的同時刪除尾遞歸?
這就是您想要的(大小為n的字母排列):
private static String computePerm(int iteration) {
return Integer.toString(iteration, n);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.