c语言用递归函数求数组中最小值,新手求解

arbitrary_me 2017-12-09 03:24:57
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define MAX 100

int MIN(int numbers[], int count);

int main(void)
{
int num[MAX],count=0,min,n;

printf("\n请每次输入一个整数,程序将输出其中最小的整数。输入-1代表结束输入。\n\n");
do {
printf(">");
scanf("%d", &n);
if (n != -1)
num[count] = n;
else
break;
count++;
} while (count < MAX);

min=MIN(num, count);

printf("数组中最小值为%d", min);

system("PAUSE");
return 0;
}

int MIN(int numbers[], int a)
{
int j;
j = a;

numbers[0] = (numbers[0] < numbers[j]) ? numbers[0] : numbers[j];

return MIN(numbers,a - 1);
}//鬼知道是用来干什么的函数!!!
...全文
443 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
赵4老师 2017-12-10
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门! 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出
  • 打赏
  • 举报
回复
gonglilong 2017-12-10
#include <stdio.h> #define MAX 100 typedef int INT; INT min(INT num[],INT i); INT main() { INT num[MAX]; INT a,b,count; count = 0; printf("\n请输入到数组中的整数:\n"); do{ scanf("%d",&a); getchar(); if(a!=-1) num[count++] = a; else break; }while(count<MAX); printf("数组中的整数序列为:\n"); for(b=0;b<count;b++){ printf("%d ",num[b]); } printf("\n"); printf("数组中最小的整数为%d ",min(num,count)); } INT min(INT num[],INT i){ int temp,j; if(i>0){ j = i; num[0] =num[0] < num[j]?num[0]:num[j]; temp=min(num,j-1); return temp; } else return num[0]; }
  • 打赏
  • 举报
回复
int MIN(int numbers[], int a) { int j; j = a; numbers[0] = (numbers[0] < numbers[j]) ? numbers[0] : numbers[j]; return MIN(numbers,a - 1); }//鬼知道是用来干什么的函数! 把最小的元素移动到一个。
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2017-12-09 03:24
社区公告
暂无公告