数组打印出垃圾值

时间:2019-10-24 13:57:26

标签: c++ arrays recursion

如果要编写一个使用公式来计算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);

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

1 个答案:

答案 0 :(得分:5)

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

也:

  • if (i != 0 || i != 1)等于if (true)
  • 每次调用exp函数都会泄漏大量内存... A永远不会 free d
  • xpotfakt可能是nullptr,有什么问题吗?
相关问题