家庭作业援助,计划没有返回价值

时间:2015-03-20 09:39:28

标签: c++

我遇到问题,如果我输入2以上的东西,taylor2函数没有返回值。如果我输入0-2它输出正确的值但是超过2的任何东西我得到一个闪烁的下划线而没有返回数据。

void taylor2(double x)
 {
     double total = 1;
     int i = 0;
     int count = 1;
     double temp = 1;

     do
     {

     {
         if (i % 2 == 1)
         {
             temp = (pow(x, i * 2 + 2) / factorial(i * 2 + 2));
             total += temp;
         }
         else {
             temp = (pow(x, i * 2 + 2) / factorial(i * 2 + 2));
             total -= temp;
         }
     }

     count++;
     i++;


     } while (fabs(temp) >= .0001);

     cout << "The last recoreded temporary value was: "<<temp << endl;
     cout << "The computed value for cosine is :  "<< total << endl;
     cout << "It took " <<count << " values to calculate the value of the function to .0001 places"<< endl;
     cout << endl; 
 }

1 个答案:

答案 0 :(得分:0)

我怀疑factorial正在返回int。如果int是32位(非常常见),那么一旦参数达到13(factorial),i = 5就会溢出。有符号整数溢出是C ++中的未定义行为

您可以使用std::uint64_t(无符号64位整数)。这将允许您评估一些较大的因子。

有关详情,请参阅Calculating large factorials in C++

更好的是,在泰勒术语之间使用重复关系。