Java 使用递归的数字模式
我在递归方面有点麻烦,我的第一个输入将是起始数字,它将一直被第二个输入减去。Ex)12和3作为输入,输出为12 9 6 3 0 3 6 9 12。printNumPattern方法是递归方法Java 使用递归的数字模式,java,recursion,Java,Recursion,我在递归方面有点麻烦,我的第一个输入将是起始数字,它将一直被第二个输入减去。Ex)12和3作为输入,输出为12 9 6 3 0 3 6 9 12。printNumPattern方法是递归方法 private static void printNumPattern(int num1, int num2) { int temp = num1; System.out.println(num1); if(num1 <= 0) {
private static void printNumPattern(int num1, int num2) {
int temp = num1;
System.out.println(num1);
if(num1 <= 0) {
if(num1 == temp) {
System.out.println();
}else {
printNumPattern(num1+num2,num2);
}
}else {
printNumPattern(num1-num2,num2);
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
int num1;
int num2;
num1 = scnr.nextInt();
num2 = scnr.nextInt();
printNumPattern(num1, num2);
}
private static void printNumPattern(int num1,int num2){
int-temp=num1;
系统输出打印项次(num1);
如果(num1对于printNumPattern
的每次“运行”,所有的变量都是唯一的。这适用于int-temp
,也适用于int-num1,int-num2
(您的参数)
因此,在第2行中,你说int temp=num1;
。如果num1
为0或以下,你就做If(num1==temp)
,这将始终是真的。else
(转到printNumPattern(num1+num2,num2);
不可能执行
听起来你想把temp
作为原始输入。如果你想这样做,继续在printNumPattern
方法中传递它作为第三个参数。你可以在递归调用后做一些事情,重用n1而不进行任何计算:
static void p(int n1,int n2){
System.out.println(n1);
if(n1<=0)return;
p(n1-n2,n2);
System.out.println(n1);
}
static void p(int n1,int n2){
系统输出打印ln(n1);
if(n1