首页 > 解决方案 > 如何在 Java 中以递归方法获取 Sum

问题描述

我试图在下面的递归方法中得到总共n 。但问题是它在每个递归调用中打印n 。

    public void recur2(Folder folder) {
    
    int n = 0;
    
    if (folder.getSubfolders() != null) {
        
        n += folder.getSubfolders().size();
        
        Set<Folder> folders = folder.getSubfolders();
        
        for(Folder fldr: folders) {
            recur2(fldr);
        }
    }
    System.out.println(n);
}

输出是这样的:

0 0 0 3 0 1 0 0 0 0 4 0 0 0 0 4 4 1

我正在寻找的是上述数字的总和,即17。

那么,这个问题的解决方案是什么?

我在这里查看了相同的主题,看起来这个问题没有任何有用的答案。请帮助我完整的方法。

标签: javarecursion

解决方案


public long getTotalSubfolders(Folder folder) {
    if(folder == null)
        return 0;
    if(folder.getSubfolders() == null)
        return 0;
    
    long n = folder.getSubfolders().size();
    
    for(Folder subFolder : folder.getSubfolders())
        n += getSubfolders(subFolder);
    
    return n;
}

推荐阅读