扫描程序中变量的递归Java输入值未应用于方法中的变量
我对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
# 1 楼答案
当你告诉你的程序
return 0
如果n!=1
,那么它将return 0
如果n != 1
。因此,它总是打印出0
,除非您将1
作为参数传递,这将导致无限循环此外,如果您每次都想打印出一些内容,那么这样做的命令应该在函数内部,而不是外部。如果
System.out.println
被放在递归函数之外,它将只在整个递归完成后运行,因此,它将只打印最后一个数字你的代码应该是这样的
PS:也要考虑数字是否达到0或负值
# 2 楼答案
Dotol,它从扫描器获取输入并将其分配给n。但是在递归函数Func(int n)中使用的逻辑总是返回0,因为使用if(n!=1)意味着每当输入n以外的任何内容时,它总是返回0
另外,你需要检查你的代码。此外,您还可以进行少量调试,以了解错误所在