程序忽略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 (int j = 100; j < 999; i++)
i++
应该是j++
for (int j = 100; j < 999; j++)
典型的,在我发布问题的那一刻我意识到我的错误。我太专注于I循环了,我没有注意到j循环中的这个:
for (int j = 100; j < 999; i++)