使用指针数组存储阶乘计算的所有中间结果

Use pointer array to store all intermediate results of factorial calculation

本文关键字:中间 结果 计算 阶乘 指针 数组 存储      更新时间:2023-10-16

我想使用指向数组的指针来存储阶乘计算的所有中间结果。下面的代码在运行时会崩溃。为什么以及如何修改代码以使其能够正常运行?

int factorial(int x, int *p){
    if (x>1){
        *p = x*factorial(x-1, p+1); 
        return *p;
    }
    else{
        *p = 1;
        return 1;   
    }
}

int *p = new int[10];

您的原始代码

int *p = new int(10);

意味着为单个 int 分配空间并将其初始化为 10,而不是 10 元素数组。