我对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.
答案 0 :(得分:2)
Dotol,它从扫描仪获取输入并将其分配给n。但是你在递归函数Func(int n)中使用的逻辑总是返回0因为你使用if(n!= 1)意味着每当你输入任何东西但是它总是返回0时。
P.S。你需要检查你的代码。此外,您可以进行一些调试,以了解您的错误。
答案 1 :(得分:1)
当您告诉您的计划return 0
n!=1
时,如果return 0
,它会n != 1
。因此,除非您将0
作为参数传递,否则它将始终打印出1
,这将最终形成无限循环。
另外,如果你想每次打印出来的东西,你的命令应该在你的功能内,而不是在外面。如果您的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还是负数