金机械表:大虾,帮用C++解决一编程

来源:百度文库 编辑:神马品牌网 时间:2024/05/06 02:38:15
编写具有如下函数原型的递归与非递归两种函数equ,负责判断数组a与b的前n个元素值是否按下标对应完全相同,是则返回true,否则返回false。并编制主函数对它们进行调用,以验证其正确性。
bool equ(int a[], int b[], int n);
提示:递归函数中可按如下方式来分解并处理问题,先判断最后一个元素是否相同,不同则返false;相同则看n是否等于1,是则返回true,否则进行递归调用(传去实参a、b与 n-1,去判断前n-1个元素的相等性),并返回递归调用的结果(与前n-1个元素的是否相等性相同).

#include <iostream>
using namespace std;

bool equ1(int a[], int b[], int n)
{
int i;
for(i=0;i<n;++i) if(a[i]!=b[i]) return 0;
return 1;
}

bool equ2(int a[], int b[], int n)
{
if(n==0) return 1;
if(a[n-1]!=b[n-1]) return 0;
if(equ2(a,b,n-1)==0) return 0;
return 1;
}

int main()
{
int a[]={1,2},b[]={1,2},c[]={2,2};

cout<<equ1(a,b,2)<<endl;
cout<<equ2(a,b,2)<<endl;
cout<<equ1(c,b,2)<<endl;
cout<<equ2(c,b,2)<<endl;
/*结果为
1
1
0
0
为正确结果
*/

return 0;
}

#include <iostream>
using namespace std;

bool equ(int a[], int b[], int n)
{
int i;
for(i=0;i<n;++i) if(a[i]!=b[i]) return 0;
else{
n--;
equ(a,b,n);
}
return 1
}
main()函数自己实现.