| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 538 人关注过本帖
标题:怎么用一个递归函数来返回一个数组中的最小值阿?
只看楼主 加入收藏
heimodao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:172
注 册:2011-4-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
怎么用一个递归函数来返回一个数组中的最小值阿?
怎么用一个递归函数来返回一个数组中的最小值,请指点一下……
2011-05-09 22:15
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:5 
程序代码:
root@~ #cat min.c
#include <stdio.h>

int main (void) {
        int a[10]={-2,3,4,1,4,5,6,8,19,0};
        int min(int a[],int n);
        printf("min=%i\n",min(a,10));
        return 0;
}
int min(int a[],int n) {
        int v1,v2,v3;
        if(n==1) return a[0];

        if(n%2==0) {
                v1=min(a,n/2);
                v2=min(a+n/2,n/2);

                if(v1<v2)       return v1;
                else            return v2;
        }

        if(n%2!=0) {
                v1=min(a,n/2);
                v2=min(a+n/2+1,n/2);
                v3=a[n/2];
                if(v1<v2) {
                        if(v1<v3)       return v1;
                        else            return v3;
                }else {
                        if(v2<v3)       return v2;
                        else            return v3;
                }
        }
}

root@~ #./min
min=-2
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-09 22:50
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:5 
程序代码:
#include"stdio.h"
#define minnum(x,y) (x)<(y)?(x):(y)
int min(int *list,int n);
int main()
{
    int arry[7]={5,10,6,2,9,1,5};
    min(arry,6);
    getch();
    
    }

int min(int *list,int n)
{
    if(n==0)
        printf("%d",*(list+n));
    else
    {
        *(list+n-1)=minnum(*(list+n),*(list+n-1));
        min(list,n-1);
        }
        }


有个大大滴缺点:数组中的数据元素会被改变!不过题目没有说不能改变

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-05-10 07:26
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:5 
程序代码:
#include <stdio.h>
int  min_value(int a[],int n)
{
    int min,t;
    if(n==1) min=a[0] ;
    else if(n==2) min = a[0]<a[1]?a[0]:a[1];
    else {
        t=min_value(a+1,n-1);
        min = a[0]< t?a[0]:t; }
    return min;
}
int main()
{
    int min, a[10]={1,98,3,56,2,6,-1,4,2,7};
     min = min_value(a,10);
     printf("min=%d\n",min);
     return 0;
}
2011-05-10 08:48
oszc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:111
专家分:154
注 册:2011-4-15
收藏
得分:5 
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

int recursiveMinimum(int a[],int size);
int compare(int c,int d);

int main(void)
{
    int i;
    int j;
    int array1[8]={0};
    int counter=0;

    srand(time(NULL));


    while (counter<=5)
    {
        for(i=0;i<=7;i++)
            array1[i]=rand()%100;

        printf("The array is: ");

        for (i=0;i<=7;i++)
            printf("%d ",array1[i]);

    printf("\nThe Minimum number is: %d.\n\n",recursiveMinimum(array1,8));
        counter++;
    }
    return 0;

}

int recursiveMinimum(int a[], int size)
{
         int mini= a[size];
        

    if (size==0)
        {
        return a[0];
        }
    else
    {
        return compare(a[size-1],recursiveMinimum(a,  size-1));
        
        
    }
}

int compare(int c,int d)
{
    if (c>d)
        return d;
    else
        return c;
}


XXXXXXXXX
2011-05-10 12:16
快速回复:怎么用一个递归函数来返回一个数组中的最小值阿?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016002 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved