程序忽略循环边界

时间:2014-08-16 11:24:15

标签: c#

我对编程很陌生,正在通过Project Euler帮助我学习。我现在正处于问题4,挑战是这样做:

  

回文数字两种方式相同。最大的回文   由两个2位数字的乘积制成的9009 = 91×99。

     

找到由两个3位数的产品制成的最大的回文   号。

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

我决定用两个for循环来设置100-999的整数,将它们相乘,反转产品然后看看它们是否相同但是我的循环比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);

我可以看到我增加了无限的东西。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

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

i++应该是j++

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

答案 1 :(得分:-1)

典型的,我发布问题的那一刻我意识到自己的错误。我太忙于专注于i循环,我在j循环中没有注意到这一点:

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