【发布时间】:2021-08-10 04:04:49
【问题描述】:
#include <stdio.h>
#include <math.h>
int prod(int arr[], int n) {
if (arr[n-1] < 0) {
return 1;
}
return ((arr[n-1]) * (prod(arr[n-2] , n)));
}
int main( int argc, char* args[] ) {
int arr[] = {2 , 3};
printf("%d" , prod(arr , 2));
}
我不断收到与指针相关的错误,但不知道要更改什么,有什么帮助吗?该代码应该使用递归函数来获得数组中所有等于或大于0的整数的乘积。
【问题讨论】:
-
arr[n-1] < 0- 什么时候满足这个条件? -
prod(arr[n-2] , n)- 此调用无效。该函数需要一个数组,但您将其改为[n-2]'s元素 -
修复编译器警告而不是忽略它们。
-
一般来说,在创建递归函数时,最好从您尝试实现的数学递归规则开始。例如,数组产品的规则将是:
prod(Arr, Len) = Arr[Len-1] * prod(Arr, Len-1)forLen > 0和prod(Arr, 0)=1
标签: arrays c recursion function-definition