swisse的眼霜:编程题.C++

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/01 01:59:23
16. 编写具有如下函数原型的递归与非递归两种函数f,负责判断数组a的前n个元素是否从大到小完全有序了,是则返回true,否则返回false。并编制主函数对它们进行调用,以验证其正确性。
bool f(int a[], int n);
提示:
(1)非递归函数中只需逐对地判断各a[i]与a[i+1]是否都已从大到小有序排列(i = 0,1,…,n-2)。
(2)递归函数中将问题分解处理为:若n=1(即只有1个元素时)则返回true而递归出口;n>1时,若最后一对元素不顺序则返回false,否则进行递归调用(传去实参a与 n-1,去判断前n-1个元素的顺序性),并返回递归调用的结果(与前n-1个元素的是否顺序性相同)。

bool f(int a[],int n)//非递归
{
bool issort=true;
for(int i=0;i<n-1;i++)
{
if(a[i]>a[i+1])
{
issort=false;
break;
}
}
return issort;
}

bool f(int a[],int n)//递归
{
if(n==1)
return true;
if(a[n-1]<a[n-2])
return false;
return f(a,n-1);
}

我也想知道啊,嘿!