السلام عليكم
مشكلة واجهتني أثنـاء ضرب رقمين كبيرة
طبعا int و double لاتكفي للناتج لأنه سيكون كبير جداً
خزنت الرقمين في String ثم أريد أن يعمل call للميثود mul إلى أن يكون طول String أقل من 2 ويضرب الرقمين
ثم يعيدهم في String مرة أخرى
لدي مشكلة في فهم الـ Recursion وتطبيقه على هذا المثال
طبعا بعد ما يخزن كل رقم ناتج من عملية الضرب المفترض أجمع كل خانـة
هذا القانون :
اقتباسA * B = A0 * B0·10n + (A0* B1 + A1 * B0) ·10n/2 + A1* B1
هذي محاولتــي :
public class multip {
static String a0, a1, b0, b1;
public static String mult(String number1, String number2)
{
if (number1.length() < 3)
{
int x = Integer.parseInt(number1);
int y = Integer.parseInt(number2);
return x * y +"";
}
a0 = number1.substring(0, (number1.length() / 2));
a1 = number1.substring((number1.length() / 2), number1.length());
b0 = number2.substring(0, (number2.length() / 2));
b1 = number2.substring((number2.length() / 2), number2.length());
return mult(a1,b0)+mult(a0,b1);
}
public static void main(String[] args)
{
String number1, number2;
String zero = "0";
int length;
number1 = JOptionPane.showInputDialog("Enter First number : ");
number2 = JOptionPane.showInputDialog("Enter second number : ");
if (number1.length() > number2.length()) {
length = number1.length() - number2.length();
for (int i = 0; i < length; i++) {
number2 = zero + number2;
}
} else if (number2.length() > number1.length()) {
length = number2.length() - number1.length();
for (int i = 0; i < length; i++) {
number1 = zero + number1;
}
}
JOptionPane.showMessageDialog(null, number1 + "\n" + number2);
String result = mult(number1, number2);
System.out.println(result);
}
}