BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #33725同步于 2009/12/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求助 程序错误

lulecsu
2009/12/18镜像同步2 回复
求救: #include<stdio.h> #include<math.h> #include<graphics.h> #define L 2 #define N 2 double p_i[N]={0.5,0.5}; void main() { int cnt; double flag_e; double SS[5],SaveResult[5]; double func_q_j(int j,int n,double S); int func_d_ij(int i,int j); double func_P_ij(int i,int j,int n,double S); double func_R(int m,int n,double S); double func_I(int m,int n,double S); double func_Last_RS(double flag_e,double S); printf("enter the judge_parament you want to input:\n"); scanf("%lf",&flag_e); printf("enter 5 S you want to input:\n"); for(cnt=0;cnt<5;cnt++) scanf("%lf",&SS[cnt]); for(cnt=0;cnt<5;cnt++) SaveResult[cnt]=func_Last_RS(flag_e,SS[cnt]); for(cnt=0;cnt<5;cnt++) printf("%lf-----",SaveResult[cnt]); } double func_q_j(int j,int n,double S) { double result=0; int i; for(i=0;i<N;i++) result+=p_i[i]*func_P_ij(i,j,n,S); return(result); } int func_d_ij(int i,int j) { int d_ij; if(i==j) { d_ij=0; } else { d_ij=1; } return(d_ij); } double func_P_ij(int i,int j,int n,double S) { double fenzi,fenmu,result=0; int d_ij,count; fenmu=0; if(n==1) { return(1.0/L); } fenzi=func_q_j(j,n-1,S)*exp(S*func_d_ij(i,j)); for(count=0;count<L;count++) fenmu+=func_q_j(count,n-1,S)*exp(S*func_d_ij(count,i)); result=fenzi/fenmu; return(result); } double func_R(int m,int n,double S) { return func_I(m,n,S); } double func_I(int m,int n,double S) { double temp,result=0; int i,j; for(i=0;i<N;i++) for(j=0;j<L;j++) { temp=func_P_ij(i,j,n,S); result+=p_i[i]*temp*log(temp/func_q_j(j,n,S)); } return(result); } double func_Last_RS(double flag_e,double S) { int i=1; double flag; do { i++; flag=func_R(i,i,S)-func_R(i-1,i,S); }while(flag>flag_e); return(func_R(i,i,S)); } 我在运行时出现 exp:overflow error 但是我分析了很久exp函数中的值不可能溢出啊,因为我输入的SS【5】都是小于0的。 怎么理解? 谢谢
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
he1l0机器人#1 · 2009/12/18
溢出是指堆栈溢出吧,是不是递归调用层数太多了?
jokerlee机器人#2 · 2009/12/18
递归深度太大,爆栈了。运算溢出是不会影响程序执行的