19

検討:

int sum(const int numbers[], const int size){
    if (size == 0)
        return 0;
    else
        return numbers[0] + sum(numbers+1, size-1);
}

これは MIT 6.096 の任意の数の整数を追加するための単純な再帰関数であり、機能します。

私が理解できないのは最後の行です:

numbers+1与えられnumbers[]た配列はどのように機能し、定数intに整数を追加することはできませんか?int[]

4

5 に答える 5

2
int sum(int *num,int size)
{
int total=0;
                                   /* function to sum integer array */
if (size <= 0) return(ERROR);
while(size--) total+= *num++;
return total;
}

より速く、よりコンパクトで、エラー耐性があります。

于 2016-03-29T01:53:18.287 に答える
1

数値はポインタです。各反復で、関数 sum() は配列を進み (これはnumbers+1が行うことです)、同時にサイズを 1 減らします ( --sizeも同様に機能します)。

size が 0 になると終了条件となり、再帰が終了します。

于 2016-03-29T01:43:42.470 に答える