数组打印出垃圾值

Array printing out garbage values

本文关键字:打印 数组      更新时间:2023-10-16

我有一个练习,我必须编写一个递归函数,使用公式计算e^x。我设法做到了,但练习说我必须将结果存储在一个数组中,这就是我碰到的墙,这是我的代码:

double exp (double x, int n, int* fakt, double* xpot) {
static double result;
static int i;
static double *A;
A  = (double *) malloc(n * sizeof(double));
if (i == n)
{
for(int k = 0; k < n; k++)
cout << A[k]; //this prints out garbage values
return result;
}

if (i != 0 || i != 1)
{
for (int j = 1; j <= i; j++)
*fakt = *fakt * j;

}
*xpot = pow(x, i);

result += *xpot / (double)*fakt;
A[i] = result;
*fakt = 1;
i++;
return exp(x, n, fakt, xpot);

}

我会将数组作为函数参数传递,但任务特别指出:

double exp (double x, int n, int *fakt, double *xpot);

是原型。我的问题是,为什么循环会打印出垃圾值,有没有办法解决它?

您没有初始化A的值,这就是垃圾打印的原因。

还有:

  • if (i != 0 || i != 1)等于if (true)
  • exp函数的每次调用都会泄漏大量内存。。。A从不freed
  • xpotfakt可能是nullptr,会出什么问题