gpt4 book ai didi

c - C中的递归程序必须给出数组的最大元素

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:16 24 4
gpt4 key购买 nike

程序必须在递归 void TMax 的帮助下给出数组 (A) 的最大元素。但它不起作用。我认为由于 Max 的指针而出现错误,我无法更正它。你能请帮帮我好吗?

#include <stdio.h>
#include <stdlib.h>

void TMax(int A[], int N,int *Max)
{
if(N==0){
*Max=A[0];
}
else
{
*Max=A[N];
if(A[N]>*Max)
{
*Max=A[N];
}
TMax(A,N-1,*Max);
}
}

int main()
{
int A[] = { 1, 2, 999, 4, 20};
int N = sizeof(A) / sizeof(A[0]);
int k=A[N];

TMax(A,N,&k);

printf("%d",k);
}

最佳答案

  1. 您正在将 int 传递给 int *,这是错误的并且会导致未定义的行为。

    甚至编译器也会发出警告。

    warning: passing argument 3 of 'TMax' makes pointer from integer wi
    thout a cast [-Wint-conversion]
    TMax(A,N-1,*Max);
  2. 您正在越界访问数组,最大索引为 N-1

  3. 你的基本情况是分配 *Max=A[0]; 在这种情况下你的 mas 将始终为零因此删除分配并返回..

    <

示例代码:

void TMax(int A[], int N,int *Max)
{
if(N==0){
return;
}
else
{
if(A[N]>*Max)
{
*Max=A[N];
}
TMax(A,N-1,Max);
}
}

main 开始,您可以这样调用。

TMax(A,N-1,&k);

关于c - C中的递归程序必须给出数组的最大元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52567378/

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