gpt4 book ai didi

c - 递归查找数组的最大值

转载 作者:行者123 更新时间:2023-11-30 16:30:34 26 4
gpt4 key购买 nike

我正在学习递归。作为练习,我试图递归地找到数组的最大值。

int recursive (int *arr, int n, int largest) {
if(n==0)
return largest;
else {
if (*(arr+n)>largest) {
largest = *(arr+n);
recursive(arr, n-1, largest);
}
}
}

int main() {
int length = n-1;
int largest = v[0];
int z = recursive(arr, length, largest);

printf("\n%d", z);
}

我遵循了你的建议,使用指针而不是数组,并且程序可能看起来更好。但它仍然没有这样做,它没有正确显示最大值。我认为逻辑是正确的。

最佳答案

首先要注意编译器警告,当您输入 else 部分时,您的递归函数不会返回值。

现在第二件事是请不要使用像 *(arr+n) 这样难以阅读的东西,而是使用 arr[n],同时,当使用数组作为函数参数时,最好使用 int arr[] 来调用该函数而不是 int *arr (在第一个版本中,很明显您应该传递一个数组)。

第三件事是命名你的东西,而不是int recursive,描述函数正在做什么,例如int maxElemRecursive

所以你的递归函数应该是这样的

int maxElemRecursive(int arr[],int n,int largest)
{
if(n==0) return largest;
if(arr[n] > largest) // No need for else because return largest; would've returned value;
{
largest = arr[n];
}
return maxElemRecursive(arr,n-1,largest); // You have to return the value of the function.
// You still pass the array with just arr.
}

关于c - 递归查找数组的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51071931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com