C++多项式插值代码输入x后cout无输出问题排查(Polynomial Interpolation)
故障根本原因
你的代码出现无输出的核心问题是内层for循环的终止条件写错,导致程序进入死循环:
你编写的内层循环代码如下:
for(int j=0;i<size_count;j++)
这里你误把终止条件的j < size_count写成了i < size_count。外层循环的i在单次外层循环执行过程中是固定值,只要i小于size_count,这个内层循环的终止条件就永远满足,j会一直自增,要么最终访问数组越界崩溃,要么一直卡在循环中,自然不会执行后续的输出逻辑。
修复方案
仅需要把内层for循环的终止条件里的i改成j即可:
// 修正后的双层for循环 for(int i=0;i<size_count;i++) { double rropt = f_x_values[i]; for(int j=0;j<size_count;j++) // 终止条件修改为j < size_count { if(j!=i) { rropt *= ((t - x_values[j])/(x_values[i] - x_values[j])); } } k += rropt; }
额外优化提示
你当前设置的退出条件是输入t==0时终止程序,如果你有插值计算x=0对应函数值的需求,可以调整退出逻辑避免功能冲突。
内容的提问来源于stack exchange,提问作者imbAF
相关产品推荐
相关产品推荐

