来自scanner的变量的Java输入值为';t在变分法中的应用
我对Java相当陌生,所以请容忍我。我正在用Java制作一个递归方法,它允许我输入一个数字X,让系统以2的减量打印每个值,直到它达到1为止。(我必须添加一条规则,扫描仪也只能接受奇数)。我设置了扫描仪,但它似乎没有拾取我指定给n的值来自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;
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)}