Java 使用递归的数字模式

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) {

我在递归方面有点麻烦,我的第一个输入将是起始数字,它将一直被第二个输入减去。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) {
            
            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