C语言用递归计算n个元素的数列a的最大值怎么做
#include"stdio.h"#defineM50//数组最多可以有50个元素inti,n,a[M];//n为数组的元素个数intmax(inta[],intn){i...
#include"stdio.h" #define M 50//数组最多可以有50个元素 int i,n,a[M];//n为数组的元素个数 int max(int a[],int n){ if(a[n]>=max(a,n-1)) return a[n]; else if(a[n]<max(a,n-1)) return max(a,n-1); } void main(){ printf("please input n:\n"); scanf("%d",&n); printf("please input a[]\n",i); for(i=0;i<n;i++) scanf("%d",&a[i]); printf("%d",max(a,n)); } 我这么弄没有输出结果,求解正确做法
展开
2个回答
展开全部
(1)数组个数为n,你还用a[n],你确定没提示错误
(2)还不如直接用个for循环,将max=0
然后和后面的逐个比,大于Max的赋值给Max就行了
(2)还不如直接用个for循环,将max=0
然后和后面的逐个比,大于Max的赋值给Max就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
递归没有出口,改成下面的试试
#include"stdio.h"
#define
M
50//数组最多可以有50个元素
int
i,n,a[M];//n为数组的元素个数
int
max(int
a[],int
n)
{
if(n==0)
return
0;
if(a[n-1]>=max(a,n-1))
return
a[n-1];
else
if(a[n-1]<max(a,n-1))
return
max(a,n-1);
}
void
main()
{
printf("please
input
n:\n");
scanf("%d",&n);
printf("please
input
a[]\n",i);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("%d",max(a,n));
}
#include"stdio.h"
#define
M
50//数组最多可以有50个元素
int
i,n,a[M];//n为数组的元素个数
int
max(int
a[],int
n)
{
if(n==0)
return
0;
if(a[n-1]>=max(a,n-1))
return
a[n-1];
else
if(a[n-1]<max(a,n-1))
return
max(a,n-1);
}
void
main()
{
printf("please
input
n:\n");
scanf("%d",&n);
printf("please
input
a[]\n",i);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("%d",max(a,n));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询