Умножение Java с использованием рекурсии
Я пишу простой код на Java, который использует рекурсию. Я хочу показать произведение двух чисел, которые введет пользователь. Мне удалось сделать это с помощью рекурсии, но я застрял в точке, где я хочу показать, что продукт может быть записан как (пример) 10*5 = 5+5+5+5+5+5+5+5+5+5 (10 раз) или 12*3 = 3+3+3+3+3+3+3+3+3+3+3+3 (12 раз). Вот мой код до сих пор. В коде я положил комментарий, где это должно быть написано (пример). Благодарю.
import java.util.Scanner;
public class RecursiveMultiplication {
public static void main(String[] args) {
Scanner key = new Scanner(System.in);
int a, b;
System.out.print("Enter first number: ");
a = key.nextInt();
System.out.print("Enter second number: ");
b = key.nextInt();
System.out.println("The product of " + a + " and "
+ b + " is: " + multiRec(a, b));
System.out.println("It could also be written as: "); //Here should product be broken into smaller numbers
}
public static int multiRec(int x, int y) {
if (x == 0 || y == 0) {
return 0;
} else {
if (x == 1) {
return y;
} else {
return x + (multiRec(x, y - 1));
}
}
}
}
2 ответа
StringBuilder должен защищаться как
StringBuilder buf = new StringBuilder (a);
Передайте этот параметр StringBuilder в multiRec
а затем измените multiRec на
public static int multiRec(int x, int y, StringBuilder buf) {
if (x == 0 || y == 0) {
return 0;
} else {
if (x == 1) {
return y;
} else {
buf.append (" + ").append (x);
return x + (multiRec(x, y - 1, buf));
}
}
}
}
Затем по завершении просто распечатайте его значение
import java.util.Scanner;
public class RecursiveMultiplication {
public static void main(String[] args) {
Scanner key = new Scanner(System.in);
int a , b;
System.out.print("Enter first number: ");
a = key.nextInt();
System.out.print("Enter second number: ");
b = key.nextInt();
System.out.printf("%d %s %d %s",a , "*" , b ,"= ");
System.out.println("\nThe product of " + a + " and "
+ b + " is: " + multiRec(b, a));
// System.out.println("It could also be written as: "); //Here should product be broken into smaller numbers
}
public static int multiRec(int x, int y) {
if (x == 0 || y == 0) {
return 0;
} else {
System.out.print(x+" ");
if (y == 1) {
return x;
} else {
System.out.print(" + ");
return x + (multiRec(x, y - 1));
}
}
}
}