首页 > 解决方案 > 返回递归方法

问题描述

为什么在这种递归方法中:

public static int contaCaratteri1(String qq, char bb, int ripp, int poss) {
    if (poss > qq.length() - 1) {
        return ripp;
    } else {
        if (bb == qq.charAt(poss)) {
            return contaCaratteri1(qq, bb, ripp + 1, poss + 1);
        } else {
            return contaCaratteri1(qq, bb, ripp, poss + 1);
        }
    }
}

即使return contaCaratteri1(qq,bb,ripp+1,poss+1);不是 int,我也可以返回,但在这个:

public static void palindroma(String k, int i, int j) {
    if (i > j && j < i) {
        System.out.print("La stringa e' palindroma");
        return;
    } else {
        if (k.charAt(i) == k.charAt(j)) {
            return palindroma(k, i + 1, j - 1);
        } else {
            System.out.print("La stringa NON e' palindroma");
            return;
        }
    }
}

我不能,因为它不是无效的

标签: javamethods

解决方案


palindroma函数应按boolean设计返回以递归调用,因此它不能具有void返回类型。

此外,当使用语句简化代码时,可能会删除else部分语句:ifreturn

public static boolean palindroma(String k, int i, int j) {
    if (null == k) {  // check for null
        return false;
    }
    if (i > j && j < i) {
        System.out.print("La stringa e' palindroma");
        return true;
    }
    if (k.charAt(i) == k.charAt(j)) {
        return palindroma(k, i + 1, j - 1);
    }
    System.out.print("La stringa NON e' palindroma");
    return false;
}

推荐阅读