java 用递归给出两个整数(12,3)的例子.12 9 6 3 0 -3 0 3 6 9 12

mwg9r5ms  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(114)

我正在尝试创建一个方法,它需要两个数字并创建一个模式。例如,如果你输入12和3,那么这个模式看起来是这样的,12 9 6 3 0 -3 0 3 6 9 12,我的逻辑有点问题,它没有给出一个负整数。

  1. package Task1;
  2. import java.util.Scanner;
  3. public class NumberPattern {
  4. public static void printNumPattern(int num1, int num2) {
  5. if (num1 < 0) {
  6. return;
  7. }
  8. System.out.print(num1 + " ");
  9. printNumPattern(num1 - num2, num2);
  10. if (num1 > 0) {
  11. System.out.print(num1 + " ");
  12. }
  13. }
  14. public static void main(String[] args) {
  15. Scanner scnr = new Scanner(System.in);
  16. int num1;
  17. int num2;
  18. num1 = scnr.nextInt();
  19. num2 = scnr.nextInt();
  20. printNumPattern(num1, num2);
  21. System.out.println();
  22. }
  23. }

我尝试使用if语句来确保一旦其中一个整数变为负数,它将再次开始相加。但是我的输出是12963036912而不是129630 -3036912

sqougxex

sqougxex1#

我不确定我是否修复了你想要修复的东西,但这会导致正确的模式:

  1. public static void printNumPattern(int num1, int num2) {
  2. System.out.print(num1 + " ");
  3. if (num1 < 0) {
  4. return;
  5. }
  6. printNumPattern(num1 - num2, num2);
  7. System.out.print(num1 + " ");
  8. }

我将第一个print移到了if语句的上方,以确保它在返回前变为负数时打印。我还删除了第二个if-condition,因为它只是在num 1为0时删除了print-statement。

相关问题