当前位置: 首页 > 知识库问答 >
问题:

布尔递归方法调用总是需要返回语句吗?

子车勇锐
2023-03-14
    public static boolean isSumOfDigitsOdd(int n) {
        if (n <= 0) {
            return false;
        } else if (n == 1) {
            return true;
        } else if (n == 2) {
            return false;
        } else if (n > 2) {
            int temp1 = n % 10;
            int temp2 = (n / 10) % 10;
            int tempFinal = temp1 + temp2;
            while (tempFinal > 2) {
                tempFinal -= 2;
            }
            isDigitSumOdd((n / 100) + tempFinal);
        }
    }
    public static boolean isDigitSumOdd(int n) {
    boolean x = false;
    if (n <= 0) {
        x = false;
    } else if (n == 1) {
        x = true;
    } else if (n == 2) {
        x = false;
    } else if (n > 2) {
        int temp1 = n % 10;
        int temp2 = (n / 10) % 10;
        int tempFinal = temp1 + temp2;
        while (tempFinal > 2) {
            tempFinal -= 2;
        }
        return isDigitSumOdd((n / 100) + tempFinal);
    }
    return x;
}

共有1个答案

柴瀚昂
2023-03-14

在任何语言中,当返回类型是非void时,return语句都是必需的。第一个代码有2个错误:

  1. 没有理由将最后一个else if作为else更合适
  2. 必须调用return isDigitSumOdd((n/100)+tempFinal);,否则函数将不会返回任何内容。相反,如果实际调用它,该函数将返回ISDigitsUmodd((n/100)+tempFinal);返回的值。这是递归的关键点。

现在,我不知道除了我提到的错误之外,您的代码是否正常工作,所以这里有一个更干净的解决方案。^是一个异或运算符。

public static boolean isDigitSumOdd(int n) {
    if (n == 0) return false;
    
    return isDigitSumOdd(n/10) ^ n%2 == 1;
}
 类似资料:
  • 我不得不使用全局变量found来指示在哪里找到了一个和。返回语句始终未定义。 此外,如果在下面的if语句中使用return语句,代码将无法正常工作。 这不是问题的最佳解决方案,但这是我得到的工作版本。 返回语句之间的****,删除时代码工作,否则我要么得到false或未定义。我不明白这部分!为什么删除返回就能解决问题,我认为每个递归调用都必须用返回语句进行。 问题可能是由于多次呼叫造成的吗?我是不

  • 问题内容: 我目前正在将SQL Server SQL语句转换为它们的ANSI泛型等效项,并且使用WITH语句来限制递归语句。 为了专注于此问题,我将简化如下的问题 如果我有两张桌子 报告单位 col1:密钥 col2:ParentReportingUnitKey 设施 col1:密钥 col2:ParentReportingUnitKey 此结构描述了直至设施的报告单位的层次结构,其中报告单位可以

  • 是否可以编写如下JPQL查询: <代码>选择计数(*) 这将根据实体填充条件是否存在返回真/假布尔值? 我想这样使用查询: 我示例中的查询在语法上不正确(解析错误),但是是否有任何正确的方法可以像在JPQL中那样进行检查,从而返回布尔值,或者只有在Java代码中才有可能?

  • 我想写返回true的Python函数一个字符串s是回文,也就是等于它的反。例如,“赛车”和“abba”是回文。到目前为止,这是我不成功的尝试。 当我告诉我的函数返回相反的结果时,我没有问题,但是,我不知道应该如何进行比较才能返回一个布尔值。 使用上面的函数会产生以下错误 现在我完全理解为什么会产生上述错误。这是因为一些递归函数返回一个boool并尝试将其添加到字符串中;但是我做不到的是如何避免这个

  • 有人能用简单的英语解释一下这句话背后的逻辑吗? 假设mContainsLoadingRow为布尔值,如果< code>mContainsLoadingRow为< code>true, 然后返回< code > getContentDataSize()1 。 如果没有,则返回 这是正确的看待方式吗?