如何用递归算法实现判断n个元素是否升序排列?希望用C给出源代码,谢谢
发布网友
发布时间:2023-05-04 07:58
我来回答
共1个回答
热心网友
时间:2023-11-17 22:42
#include<stdio.h>
#include<stdlib.h>
#define Max 101
int rel=1;
int IsAscending(int *a,int latter)
{
int former=latter-1;
if(latter==1) return a[1]-a[0]; /*递归终止条件*/
else return (a[latter]-a[former])*IsAscending(a,former);/*递归调用*/
}
int main()
{
int n,a[Max],i;
printf("Enter the lenth of the array:\n");
scanf("%d",&n);
printf("Enter the elements of the array:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
if(IsAscending(a,n-1)>0) printf("Yes!\n");
else printf("No!\n");
return 0;
}
后注:由于不知道你所说的递增数列(Ascending Sequence)是否是严格递增,故在本程序中按严格递增来处理了。只有输入一个严格递增的函数才输出Yes,否则输出No
样例输入:
10
1 2 3 4 5 6 7 8 10 9
样例输出:
No!
样例输入:
10
1 2 3 5 5 6 7 8 9 9
样例输出:
No!
样例输入:
10
1 2 3 4 5 6 7 8 9 10
样例输出:
Yes!