当前位置:  开发笔记 > 编程语言 > 正文

使用递归查找数组的最小元素

如何解决《使用递归查找数组的最小元素》经验,为你挑选了1个好方法。



1> Haris..:

您没有设置size变量.由于size是一个全局变量,它会自动初始化为0.

所以当第一次达到这个条件时

if(i < size)

失败,并返回min,这是1000


请执行下列操作

int max;
int i;
int a[10]={12,6,-24,78,43,3,22,45,40};

size = 10;

或者,让它变得更好.

int max;
int i;
int a[10]={12,6,-24,78,43,3,22,45,40};

size = sizeof(a)/sizeof(int);

正如评论中所讨论的,代码中还有另一个错误.您忽略if块内函数调用的返回值.

您应该使用它将值返回给调用函数.就像是,

if(i < size)
{
    if(min > a[i])
        min=a[i];
    i++;
    return getminElement(a);
}

正如一些人所指出的,你的代码有点令人困惑,所以我会发布一个更简单的代码,没有staticglobal变量.试着理解它,如果你觉得困难就发表评论.

#include
#define MAX 100

int getminElement(int [], int, int);

int main()
{

    int min;
    int i;
    int a[10]={12,6,-24,78,43,3,22,45,-40};

    printf("Smallest element of an array is: %d", getminElement(a, 0, sizeof(a)/sizeof(int)));

    return 0;
}

int getminElement(int a[], int index, int size)
{
    int min = 9999;

    if(index < size)
        min = getminElement(a, index + 1, size);

    if(a[index] < min)
        return a[index];
    else
        return min;

}


@Haris; 查看`getminElement`函数中的`getminElement(a);`语句.它的返回类型是`int`.
在`getminElement(a);`中,该递归返回的值被忽略.
推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有