首页 > 解决方案 > 数组和递归函数不起作用

问题描述

大家好我很困惑为什么这个函数每次都返回0。我使用 arr[0] 作为索引并在主函数中定义它的数组大小。

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}

标签: crecursion

解决方案


以下建议的代码:

  1. 使用递归
  2. 执行所需的功能

现在,建议的代码:

int sum_array (int arr[]) 
{
    if(arr[0]<=0)
    {
        return 0;
    }
    else
    {
        int index = arr[0];
        arr[0]--;
        return arr[ index ] + sum_array( arr );
    }
}

推荐阅读