You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言for循环超时while循环正常?回文数算法差异求解

回文数问题中for循环超时、while循环正常的原因分析

我在LeetCode上用C语言解决回文数问题时,发现for循环实现的版本触发了「time limit exceeded(超时)」错误,但while循环的版本运行正常。两种实现代码如下:

For Loop 实现

int temp, reverse = 0;
for(temp = x; temp > 0; temp/10){                // x is the variable to be tested
   reverse = reverse*10 + temp%10;
} 
if(reverse == temp){
   return true;
}
return false;

While Loop 实现

int temp, reverse = 0; 
temp = x;                  // x is the variable to be tested
while(temp>0){
   reverse = reverse*10 + temp%10;
   temp = temp/10;
}
if(reverse == temp){
   return true;
}
return false;

差异原因分析

核心问题出在for循环的更新表达式上:

  • 你的for循环第三个表达式写的是temp/10,这仅仅是执行了除法计算,但没有将结果赋值给temp。这就导致temp的数值自始至终不会变化,只要初始的temp > 0条件成立,循环就会无限执行下去,最终触发超时错误。
  • 而while循环中,每次迭代都会执行temp = temp/10,这个赋值操作会让temp不断被缩小,直到变为0,循环能正常终止。

另外补充一个两个版本共有的逻辑错误:循环结束后temp的值已经是0,此时判断reverse == temp只有当reverse为0时才会返回true,正确的逻辑应该是将reverse与原数x比较,或者在循环前保存temp的初始值再进行比较。不过这不是导致超时的直接原因。

内容的提问来源于stack exchange,提问作者TDivyanshu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:25:26