程序忽略for循环边界

本文关键字:循环 边界 for 程序 | 更新日期: 2023-09-27 18:18:20

我对编程很陌生,我正在通过Project Euler来帮助我学习。现在我们来看第4题,难点是:

回文数的两种读法相同。最大的回文由两个2位数的乘积得到9009 = 91 × 99。

求两个3位数乘积的最大回文数字。

来源:https://projecteuler.net/problem=4

我决定用两个for循环来设置这个从100到999的整数,将它们相乘,然后反转乘积,然后看看它们是否相同,但是我的for I循环比999高得多,我不知道为什么。下面是代码:

// Problem 4 - Find the largest palindrome made 
// from the product of two 3-digit numbers.
long result = 0;
for (int i = 100; i < 999; i++)
{
    for (int j = 100; j < 999; i++)
    {
        long product = i * j;
        long reverse = Convert.ToInt64(Maths.Reverse(product.ToString()));
        if (product == reverse)
        {
            if (product > result)
            {
                result = product;
            }
        }
    }
}
Console.WriteLine("Palindrome: " + result);

如果我包含这一行来记录结果:

Console.WriteLine("i = " + i + ", j = " + j + ", SUM = " + i * j);

我可以看到它似乎在无限地增加。

任何帮助都将非常感激!

程序忽略for循环边界

for (int j = 100; j < 999; i++)

i++应该是j++

for (int j = 100; j < 999; j++)

典型的,在我发布问题的那一刻我意识到我的错误。我太专注于I循环了,我没有注意到j循环中的这个:

for (int j = 100; j < 999; i++)