使用指针数组存储阶乘计算的所有中间结果
Use pointer array to store all intermediate results of factorial calculation
我想使用指向数组的指针来存储阶乘计算的所有中间结果。下面的代码在运行时会崩溃。为什么以及如何修改代码以使其能够正常运行?
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 元素数组。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- valgrind-hellgrind与泄漏检查的结果不同
- 2D数组来自文本输入,中间有空格
- 用C++20 fmt限制结果的总大小
- 如何返回一个类的两个对象相加的结果
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 序列化,没有库的整数,得到奇怪的结果
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 在更改for循环的第三部分后,未使用for循环结果
- 使用++运算符会导致意外的结果
- 为什么字符<<和字符>>中间结果 int
- 如果表达式的中间结果溢出,这是未定义的行为吗
- 使用指针数组存储阶乘计算的所有中间结果
- 作为OpenMP杂注结果的中间代码
- GCC可以打印出中间结果
- 绘制c++代码中间结果的最佳工具是什么?
- 使用中间结果初始化多个属性
- Qt验证器-我如何拒绝中间结果