转载自:
http://zhidao.baidu.com/question/141962606
2.double型只能表示到10的307次方,这是最大值了,当你输入172时,你的程序就计算到307次方了,
因此当你输入308的时候就超出double能表示的范围了。
因此出错,在C++中这是极限值,没办法让double能容纳更大的数了,因此没有办法改正。
问题:
我的代码:
#include<iostream.h>
double seq(double x);
void main() {
double n,sum;
cin>>n;
sum=2*seq(n);
cout<<sum<<endl;
}
double seq(double x) {
if(x>3)
return (x-2)*seq(x-1)+1;
else
return 2;
}
题目要求n可以取到200
可是我的程序取200时出现1.#INF 哪里出问题了 要如何改进
答案:
1.数值太大,越界了!修改如下:#include<iostream.h>
long double seq(double x);
void main() {
long double n,sum;
cin>>n;
sum=2*seq(n);
cout<<sum<<endl;
}
long double seq(double x) {
if(x>3)
return (x-2)*seq(x-1)+1;
else
return 2;
}
2.double型只能表示到10的307次方,这是最大值了,当你输入172时,你的程序就计算到307次方了,
因此当你输入308的时候就超出double能表示的范围了。
因此出错,在C++中这是极限值,没办法让double能容纳更大的数了,因此没有办法改正。
3.http://www.shoup.net/ntl/index.html
这是一个算大数的库,自己看看代码