序列 Java 中奇数的递归问题

Problem with recursion for odd number in sequence Java

提问人:wdwizzard 提问时间:8/5/2022 最后编辑:wdwizzard 更新时间:8/5/2022 访问量:56

问:

public static int calculate(int n){
    if (n <= 1) {
        return 1;
    } else if (n >= 2 && n%2 == 0){
        return (n * calculate(n - 2));
    } else if (n >= 3 && n%2 == 1){
        return n-1 * calculate(n-2);
    } else {
        return n;
    }

我需要它来为奇数制作一个数字序列:

(n-1) * (n-2) * (n-2)..... * 2

例如:

n=9 == 8 * 6 * 4 * 2 or n=11 == 10 * 8 * 6 .....

这条线不起作用。return n-1 * calculate(n-2)

Java 递归 序列

评论

0赞 khelwood 8/5/2022
想必你的意思是.但是,对于所有 if 条件都为 false 的情况,编译器将需要一个 return 语句。(n-1) * calculate(n-2)
0赞 wdwizzard 8/5/2022
哦,sory,我没有粘贴所有代码。我有一个 return 语句,用于所有 if 为 false 的情况。我要在帖子中更改它
0赞 Federico klez Culloca 8/5/2022
@wdwizzard我投票决定重新开放,但对于未来,您应该发布一个最小、完整和可验证的示例以避免此类事件。
0赞 wdwizzard 8/5/2022
好吧,非常感谢,很抱歉我的错误:)
0赞 Rogue 8/5/2022
该更改(括号内)@OP解决了您的问题?如果是这样,这个问题应该(由其他人)关闭,因为这是一个由错别字/不可重现引起的问题,因为它不太可能帮助未来的读者。(n-1)

答:

0赞 Utkarsh Sahu 8/5/2022 #1

因此,您错过了括号,操作顺序出错了,并且您得到了错误的输出......

而不是 ,您必须将return n-1 * calculate(n-2)

return (n-1) * calculate(n-2)

现在您将获得正确的输出...