为什么Java函数执行return语句后仍会继续执行后续代码?
问题原因分析
- 根本原因是
beautiful方法的递归调用未返回递归计算结果:
当if(sum==1)条件命中执行return true时,这个返回值仅会回到上一层递归调用beautiful(sum)的位置,你的代码中没有接收这个返回值,也没有将该结果向上返回,代码会继续执行当前层后续的逻辑,最终走到return false,直接覆盖了递归得到的true结果。
你调试时观察到的return true执行后仍有代码运行,本质是上一层递归调用收到返回值后,继续执行当前层剩余的return false逻辑,并非return true语句失效。 - 修复方案:
将beautiful方法末尾的
beautiful(sum); return false;
修改为
return beautiful(sum);
即可将递归结果逐层向上返回,符合快乐数判断的逻辑预期。
内容的提问来源于stack exchange,提问作者PRAGYA AGARWAL
相关产品推荐
相关产品推荐

