来自scanner的变量的Java输入值为';t在变分法中的应用

来自scanner的变量的Java输入值为';t在变分法中的应用,java,recursion,increment,decrement,Java,Recursion,Increment,Decrement,我对Java相当陌生,所以请容忍我。我正在用Java制作一个递归方法,它允许我输入一个数字X,让系统以2的减量打印每个值,直到它达到1为止。(我必须添加一条规则,扫描仪也只能接受奇数)。我设置了扫描仪,但它似乎没有拾取我指定给n的值 public class Recursividad { public static int Func(int n) { if (n != 1) return 0;

我对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);
}

}

如果
n!告诉程序
返回0,则输出总是0。

=1
,如果
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或负数

< Pto> dotol,它从扫描仪取入,并将其分配给N。但是在递归函数Func(int n)中使用的逻辑总是返回0,因为使用if(n!=1)意味着每当输入n以外的任何内容时,它总是返回0


另外,你需要检查你的代码。此外,您还可以进行一些调试,以了解错误所在。

根据您的条件
如果(n!=1)
,则每次都将返回0。感谢您的帮助,我不知道返回是如何工作的。我应用了您建议的更改,并将{if(n!=1)}更改为{if(n)}