C语言函数嵌套调用计算错误分析及修正
C语言函数嵌套调用计算错误分析及修正
本文将分析一段使用函数嵌套调用方法计算的C语言代码,并解释代码中出现的错误及修正方法。
问题代码:
#include <stdio.h>
double fac(int n)
{
double s=n; // 错误:当n=0时,s的初值为0而不是1
if(n<=1) return 1;
for(;--n;) s*=n;
return s;
}
double sum(int n1, int n2)
{
int i;
double s=0;
for(i=n1;i<=n2;i++) s+=1/fac(i);
return s;
}
int main ( )
{
double s;
s=sum(1,3)+sum(6,9)+sum(12,15);
printf("\ns=%f",s);
return 0;
}
错误分析:
经过计算,发现代码中存在一个问题:在函数fac中,当n=0时,s的初值为0而不是1,导致0!被计算为1,从而影响了最终结果。
修正方法:
修改fac函数如下:
double fac(int n)
{
double s=1; // 将s的初值改为1
if(n<=1) return 1;
for(;--n;) s*=n;
return s;
}
运行结果:
重新运行程序,结果为s=1.668282,与正确结果一致。
总结:
本文通过分析C语言函数嵌套调用方法计算过程中出现的错误,强调了初始化变量时需注意细节,避免出现逻辑错误,从而影响最终结果。
原文地址: https://www.cveoy.top/t/topic/mQei 著作权归作者所有。请勿转载和采集!