簡體   English   中英

從方法(Java)刪除尾遞歸

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM