C语言程序计算问题:求和函数结果错误分析与修正
#include <stdio.h> #include <string.h>
double fac(int n) { double s=1; int i; if(n<=1) return 1; for(i=n;i>0;i--) { s*=i; } 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; }
问题出在两个函数中的return语句位置不正确,导致只计算了一次循环。应将return语句移动到循环结束后再执行。修改后的代码如下:
#include <stdio.h> #include <string.h>
double fac(int n) { double s=1; int i; if(n<=1) return 1; for(i=n;i>0;i--) { s*=i; } 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; }
运行结果为:s=1.668282
原文地址: https://www.cveoy.top/t/topic/mQhf 著作权归作者所有。请勿转载和采集!