C语言函数调用,递归调用问题
答案:1 悬赏:60 手机版
解决时间 2021-04-24 22:55
- 提问者网友:ミ烙印ゝ
- 2021-04-24 00:40
float P(float n,float x){float f; if(n==0) f=0; else if(n==1) f=x; else if(n>=1) f=((2*n-1)*x-P((n-1),x)-(n-1)*P((n-2),x))/n; return(f);} #include void main() {float n;float x; scanf("%f,%f",&n,&x); printf("p=%f\n",P(n,x));}错在哪儿呢,n=0的时候输出正确,其他都不对
最佳答案
- 五星知识达人网友:零点过十分
- 2021-04-24 01:49
不明白你说的不对是指怎么不对,最好附个理想输入输出和实际输出上来。
但是强烈建议你把n换成int型,表达式中必要的地方可以强制转换。
浮点型在运算中值会失真,也就是说2.0-1不太可能等于1.0,而是1.99999997一类的数字,只是标准输出函数在输出时进行了保留一定小数位数的转换你看不出来而已,你的表达式中有“.../n ” 的部分,这样必然造成误差。
另外请你确认你的递归表达式是符合你要求的没有写错。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯