计算双数组中所有元素的总和

low*_*mun 2 c++ recursion

我在使用数组进行递归时有点困惑,任何人都可以纠正我的错误吗?

新的更新,根据问题需要一些行无法编辑

double sum_of_array(double x[],int size)
{


    static double sum; <---can be edit

    int index = 0; <--can be edit

    if(index<size){

        return sum + sum_of_array(x,size-1); <--can be edit

    }

    else {
       something ; <--can be edit
       return sum; <--can be edit

    }
}

int main(void){

    double x[] = {4.5,5.0,6.8};

    double y[] = {4.7,3.4,2.5,5.2};

    cout<<"Sum X = "<<sum_of_array(x,3)<<endl;

    cout<<"Sum Y = "<<sum_of_array(y,4)<<endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

Sum of the element in X[]=15.3

Sum of the element in Y[]= 15.8
Run Code Online (Sandbox Code Playgroud)

sha*_*oth 6

你正试图制作一些极度过度工程的东西.你需要两件事 - 边缘情况(递归截止)和一般情况(递归下降).在你的情况下,边缘情况是"数组大小为零",一般情况是"抓住第一个元素并将其余的数组传递给递归".

它可能是这样的:

double sum_of_array( double x[], int size )
{
    if( size == 0 ) { //this is the edge case
        return 0;
    }

    // here you grab the first element and pass the rest of array into a recursive call
    return x[0] + sum_of_array( x + 1, size - 1 );
}
Run Code Online (Sandbox Code Playgroud)