Это то, что я написал до сих пор. Он компилируется, и, насколько я могу судить, он должен «работать» - если бы вы дали своему компьютеру бесконечное количество времени для вычисления ответа!
Мне просто интересно, сможет ли кто-нибудь дать мне способ оптимизировать это так, чтобы моя программа сообщала мне самое высокое палиндромное число (одинаковое как для прямого, так и для обратного направления, например, 91 * 99 = 9009;), образованное умножение любых двух трехзначных чисел.
public class HighestPalindrome {
public static void main(String[] args) {
int number=0;
int answer=0;
search:
for(int LoopOfFirstNumber=999;LoopOfFirstNumber<=100;LoopOfFirstNumber -= 3){
for(int LoopOfSecondNumber=LoopOfFirstNumber;LoopOfSecondNumber<=100;LoopOfSecondNumber-=3)
{
number = LoopOfFirstNumber * LoopOfSecondNumber;
if (number == reverse(number))
{
answer=number;
System.out.println(answer);
break search;
}
}
}
}
//The code after this works fine, I believe. It will reverse any number given very quickly, I think the problem
//is above....with the two for loops!
private static int reverse(int n, int r) {
if (n == 0) return r;
System.out.println("This iteration returns " + n/10 + " and " + 10*r+n%10);
return reverse(n/10, 10*r+n%10);
}
public static int reverse(int n) {
return reverse(n, 0);
}