大家好,我很困惑为什么这个函数每次都返回0。我使用arr[0]作为索引,并在main函数中定义它的数组大小。
int sum_array (int arr[]) {
int result;
arr[0] = arr[0]-1;
if(arr[0]<=0){
return 0;
}
result = ((sum_array(arr))+(arr[arr[0]]));
return result;
}
如果我使用if(arr[0]<=1)
而不是if(arr[0]<=0)
,则返回5。我也不明白为什么它会返回5。
array = {0,1,1,2,3,3,4}
以下建议的代码:
- 使用递归
- 执行所需的功能
现在,提出的代码:
int sum_array (int arr[])
{
if(arr[0]<=0)
{
return 0;
}
else
{
int index = arr[0];
arr[0]--;
return arr[ index ] + sum_array( arr );
}
}