gpt4 book ai didi

c++ - 类递归数组

转载 作者:行者123 更新时间:2023-11-30 01:38:33 27 4
gpt4 key购买 nike

我的问题是,我不明白为什么我无法获得所需的数组随机数总和。谁能帮我找出错误吗?

#include <iostream>
using namespace std;
class Recursion{
int max_size;
double sum;
int index;
double* arr;
public:
Recursion(int);
void fill_array();
void sum_array();
};
Recursion::Recursion(int size){//from main
max_size = size;
sum = 0;
index = 0;
arr = new double[max_size];
}
void Recursion::fill_array(){
if (index == max_size){
cout << "Array is Full." << endl;
//stop array
}
else{
arr[index] = rand() % 10+1;
cout << arr[index] << endl;
index++;
fill_array();
}
}
void Recursion::sum_array(){
if (index == max_size){
cout << "Sum is: "<< sum << "!"<< endl;
}
else{
sum = sum + arr[index];
index++;
sum_array();
}
}
int main(){
Recursion connect(5);
connect.fill_array();
connect.sum_array();
return 0;
}

输出是:

8
10
4
9
1
Array is Full.
Sum is: 0!

最佳答案

使用对象字段进行递归是最不常见的。像 index 这样的变量通常作为参数传递:

double Recursion::sum_array(int index) {
if (index >= max_size) {
return 0;
} else {
return arr[index] + sum_array(index + 1);
}
}

int main() {
// ...
cout << "Sum is: "<< sum_array(0) << "!"<< endl;
// ...
}

否则,就像其他答案所说的那样,在您的原始代码中您忘记了重置索引(这正是将它存储在类中很奇怪的原因)。

关于c++ - 类递归数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47526749/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com