数组打印出垃圾值

Nen*_*nad 0 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);
Run Code Online (Sandbox Code Playgroud)

}

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

double exp (double x, int n, int *fakt, double *xpot);
Run Code Online (Sandbox Code Playgroud)

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

Zai*_*org 5

您不初始化A多数民众赞成为什么打印垃圾的值。

也:

  • if (i != 0 || i != 1)等于if (true)
  • 您每次调用exp函数会泄漏的内存量好... A永远不会 freeð
  • xpotfakt可能nullptr,有什么可以去错了吗?