c - 数组和递归函数不起作用
问题描述
大家好我很困惑为什么这个函数每次都返回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}
解决方案
以下建议的代码:
- 使用递归
- 执行所需的功能
现在,建议的代码:
int sum_array (int arr[])
{
if(arr[0]<=0)
{
return 0;
}
else
{
int index = arr[0];
arr[0]--;
return arr[ index ] + sum_array( arr );
}
}
推荐阅读
- typescript - 从 ConstructorParameters 获取第 n 个参数类型
- typo3 - DatabaseRowsUpdateWizard 上的 TYPO3 升级向导失败
- vue.js - 使用 v-for 动态渲染图像?
- ruby-on-rails - 如何翻译 ActiveStorage 属性
- javascript - 为什么调用不带参数的函数时会出现未定义的错误?
- machine-learning - scikitlearn 删除频率较低的分类类
- python - Web Scraping Asp.NET 网站使用 Beautiful Soup 和 Python
- c - 在我的代码中对引用调用和值调用感到困惑
- jquery - GSAP 每秒帧数 (fps) 更改 onStart() 和 onComplete()
- c# - .Net Standard 中的 CryptographicBuffer 等效项?