3、用递归算法判断数组a[N]是否为一个递增数组。
下面是我写的算法,那位有更好的:
#include <stdio.h>
#include <conio.h>
#define N 5
int Judgment(int a[]);
int main()
{
int a[N], i, flag = 1;
printf("Enter array data: ");
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
flag = Judgment(a);
if (flag == 1)
{
printf("increment array.\n");
}
else if (flag == 0)
{
printf("no increment array.\n");
}
getch();
return 0;
}
int Judgment(int a[])
{
static i = 0, flag = 1;
if(i < N - 1)
{
if (a[i] > a[i + 1])
{
flag = 0;
}
i++;
Judgment(a);
}
return flag;
}
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#define N 5
int Judgment(int a[], int num);
int main()
{
int a[N], i, flag = 1;
printf("Enter array data: ");
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
flag = Judgment(a, N);
if (flag == 1)
{
printf("increment array.\n");
}
else if (flag == 0)
{
printf("no increment array.\n");
}
getch();
return 0;
}
int Judgment(int a[], int num)
{
static i = 0, flag = 1;
for(i=0; i<num; i++)
{
if (a[i] >= a[i+1]) //假如发现哪两个不是递增,立刻跳出;
{
flag = 0;
break;
}
}
return flag;
}
哥们,用递归效率差已.我帮你改了代码.
----------------解决方案--------------------------------------------------------
假如数据太大,用内存动态分配和指针来做即可.
----------------解决方案--------------------------------------------------------
人家要求就是用递归,不用递归不行
----------------解决方案--------------------------------------------------------
哦,我倒没注意.甘你D程序得啦.
----------------解决方案--------------------------------------------------------
3、用递归算法判断数组a[N]是否为一个递增数组。
下面是我写的算法,那位有更好的:
#include <stdio.h>
#include <conio.h>
#define N 5
int Judgment(int a[]);
int main()
{
int a[N], i, flag = 1;
printf("Enter array data: ");
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
flag = Judgment(a);
if (flag == 1)
{
printf("increment array.\n");
}
else if (flag == 0)
{
printf("no increment array.\n");
}
getch();
return 0;
}
int Judgment(int a[])
{
static i = 0;
if(i < N - 1)
{
if (a[i] > a[i + 1])
{
return 0; /*这样才好*/
}
i++;
Judgment(a);
}
return 1;
}
flag变量不要,这样简单些,至于本质算法应该是最简了吧,就我来讲.
----------------解决方案--------------------------------------------------------
/*用递归算法判断数组array[N]是否为一个递增数组*/
#include <stdio.h>
#include <conio.h>
#include "stdlib.h"
int Judgment(int a[],int i,int N);
int main()
{
int *array=NULL,N,i,flag=1;
printf("Enter the length of the array: ");
scanf("%d",&N);
array=(int *)malloc(N*sizeof(int));/*实现动态数组*/
printf("Enter array data: ");
for (i=0;i<N;i++)
{
scanf("%d", &array[i]);
}
flag=Judgment(array,0,N);
if (flag==1)
{
printf("increment array.\n");
}
else if(flag==0)
{
printf("no increment array.\n");
}
getch();
}
int Judgment(int a[],int i,int N)
{
int flag=1;
if(i<N)
{
if(a[i]>a[i+1])
return 0; /*出现不递增则返回0,不再向下验证*/
i++;
flag=Judgment(a,i,N);
}
return flag;
}
----------------解决方案--------------------------------------------------------
/*用递归算法判断数组array[N]是否为一个递增数组*/
#include <stdio.h>
#include <conio.h>
#include "stdlib.h"
int Judgment(int a[],int i,int N);
int main()
{
int *array=NULL,N,i,flag=1;
printf("Enter the length of the array: ");
scanf("%d",&N);
array=(int *)malloc(N*sizeof(int));/*实现动态数组*/
printf("Enter array data: ");
for (i=0;i<N;i++)
{
scanf("%d", &array[i]);
}
flag=Judgment(array,0,N);
if (flag==1)
{
printf("increment array.\n");
}
else if(flag==0)
{
printf("no increment array.\n");
}
getch();
}
int Judgment(int a[],int i,int N)
{
int flag=1;
if(i<N)
{
if(a[i]>a[i+1])
return 0; /*出现不递增则返回0,不再向下验证*/
i++;
flag=Judgment(a,i,N);
}
return flag;
}
if(i<N)
过了吧
----------------解决方案--------------------------------------------------------
呵呵,楼上的心细
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------