Java 来自扫描仪的变量输入值未应用于方法中的变量

Java input value for variable from scanner isn't applying to variable in method

我是 Java 的新手,请多多包涵。我在 Java 中创建了一个递归方法,它允许我输入数字 X 并让系统以 2 为减量打印每个值,直到它达到 1。(我必须添加一个规则,扫描仪可以也只取奇数)。我设置了扫描仪,但它似乎没有获取我分配给 n 的值。

public class Recursividad {

        public static int Func(int n)
        {
            if (n != 1)
                return 0;
            else 
                return Func(n-2);
        }

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    int x = Func(n);
    System.out.println(x);
}

}

输出始终为 0。

当您告诉程序 return 0 if n!=1 时,它会 return 0 if n != 1。因此,除非您将 1 作为参数传递,否则它将始终打印出 0,这将导致无限循环。

另外,如果你想每次都打印一些东西,你的命令应该在你的函数内部,而不是外部。如果你的 System.out.println 被放在你的递归函数之外,它只会在整个递归完成后才成为 运行,因此,它只会打印出最后一个数字。

您的代码应如下所示

public class Recursividad {

    public static int Func(int n)
    {
        System.out.println(n);
        if (n == 1)
            return n;
        else 
            return Func(n-2);
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int x = Func(n);
    }
}

PS:还要考虑检查数字是否为 0 或负数

Dotol,它从扫描仪获取输入并将其分配给 n。但是你在递归函数 Func(int n) 中使用的逻辑总是 returning 0 因为你使用 if(n!=1) 意味着无论何时你输入任何东西但 n 它总是 return 0。

P.S。你需要检查你的代码。你也可以做一些调试来知道你错在哪里。