C程序设计(谭浩强)的几处错误

      今天做谭浩强的《C程序设计》第四版的辅导手册,做到第七章的13题(用递归求n阶勒让德多项式)时,发现一个错误,以下贴出的书上给出的参考答案。错误的地方我以注释的形式标出吧。

第一个错误出现在题目给出的公式,第二个减号应该为乘号(没办法写出公式),博主是根据维基百科给出的曲线图试答案试出来的。哈哈

int main()
#include <stdio.h>
{
	int x,n;
	float p(int,int);
	printf("\ninput n & x:");
	scanf("%d,%d",&n,&x);
	printf("n=%d,x=%d\n",n,x);
	printf("P%d(%d)=%6.2f\n",n,x,p(n,x));
	return 0;
}

float p(int n,int x)
{
	if(n==0)
		return (1);
	else if(n==1)
		return (x);
	else
	return(2*n-1)*x*p((n-1),x)-(n-1)*p((n-2),x)/n;  //此处应该为
							//return((2*n-1)*x*p((n-1),x)-(n-1)*p((n-2),x))/n;
                                                       //谭老忘了个括号,使式子先运算后面部分。
}


输入3,4时书上给出的运行结果是947.33。

实际结果应该是154.00。

希望大家做题时不要以为自己的答案错了。

还有一个是数学公式的错误:勒让德多项式的x的定义域为[-1,1],根据数学,是不可以拿 3 去测试的。

这么多错误,看来谭老确实老了,但出现这种错误是难免的,我们编程出现的错误更多咧,望在第五版改正哈。谭老的书写得不错,讲解得很详细,自己看的话理解得比老师讲的好。

如果本文如有错误,欢迎留言指出。

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值