C++两个数组的前n项是否相等
#include <iostream>
#define N 5
using namespace std;
bool equ_n(int a[], int b[], int n) //非递归
{
for(int i=0;i<n;i++)
{
if(a[i]!=b[i])
return false;
}
return true;
}
bool equ_y(int a[],int b[],int n) //递归
{
if(a[n-1]!=b[n-1])
return false;
else if(n==0)
return true;
else
return equ_y(a,b,n-1);
}
int main()
{
int a[N],b[N];
int num;
cout <<"请输入"<<N<<"个数: "<<endl;
for(int i=0;i<N;i++)
cin >>a[i];
cout <<"请再输入"<<N<<"个数: "<<endl;
原文请找腾讯752018766辣,文-论'文.网http://www.751com.cn cout <<"\n请输入您要比较前几个元素的值: ";
cin >>num;
cout <<"1-用非递归方法判断,2-用递归方法判断: ";
int choice;
cin >>choice;
switch(choice)
{
case 1: cout <<"用非递归方法判断得:"<<endl;
if(equ_n(a,b,num))
cout <<"两组数的前"<<num<<"个数相等."<<endl;
else
cout <<"两组数的前"<<num<<"个数不相等!"<<endl;break;
case 2: cout <<"用递归方法判断得:"<<endl;
if(equ_y(a,b,num))
cout <<"两组数的前"<<num<<"个数相等."<<endl;
else
cout <<"两组数的前"<<num<<"个数不相等!"<<endl;break;
default: cout <<"输入有误!"<<endl;
}
return 0;
}需求分析
编写具有如下函数原型的递归与非递归两种函数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个元素的是否相等性相同)。
1.2概要设计
设计数组长度为5,分别运用递归方法和非递归方法比较两数组的前n项是否相等。、
1.3详细设计与编码
代码见上传实验
流程图如下main
1.4运行调试
输入两个数组的数
选择方法进行比较
1.5用户使用说明
运行程序,用户根据提示输入两个数组的数,然后程序本身根据递归算法或者非递归算法进行比较,前n项是否相等。
1.6设计心得
这道程序对自己能力的提高有很大帮助,在做之前对递归的概念总是很模糊,现在了解多了,感觉也不是很难。1819