使用递归的成员测试
A member test using Recursion
我很难理解递归。我在这里寻找一些反馈,看看这个程序看起来如何。
问题:::编写名为isMember的递归布尔函数。该函数应该接受三个参数:一个整数数组,一个表示数组中元素数量的整数,以及一个要搜索的整数值。如果在数组中找到该值,该函数应该返回true,如果没有找到该值,则返回false。在程序中演示该函数的用法,该程序要求用户输入一个数字数组和一个要搜索的值。
What I have::
#include <iostream>
using namespace std;
bool isMember(int[],int,int);
int main()
{
const int SIZE = 10;
int numSearch;
int elementz[SIZE];
for(int i = 0; i < SIZE; i++)
{
cout << "Element " << i + 1 << "t";
cin >> elementz[i];
}
cout << "Enter element to searchn";
cin >> numSearch;
bool value = isMember(elementz,SIZE,numSearch);
if(value ==1)
cout << "Element is foundn";
else
cout << "Element not foundn";
return 0;
}
bool isMember(int arr[], int sizze, int num)
{
if(arr[sizze] == num)
return true;
else
isMember(arr,sizze -1, num);
}
如果if
子句为假,则函数不返回。此外,请记住索引从0开始,而不是1(为什么是sizze
?)。
我建议从包含3个值的数组开始,而不是10个。这样,您就可以手动跟踪和展开连续的呼叫。
为了使递归工作,您不仅需要一个"条件停止",而且还需要一个非条件停止。
在您的示例中,您只提供了一个条件停止。要使其正常工作,请尝试这样做:
bool isMember(int arr[], int sizze, int num)
{
if ( sizze < 0 ) // "inconditional stop"
return false;
if(arr[sizze] == num) // conditional stop. It could happen or not
return true;
else
isMember(arr,sizze -1, num);
}
相关文章:
- 数据成员SFINAE的C++17测试:gcc vs clang
- 如何测试成员相等运算符?
- 如何使用成员 c++ 使用 gtest 测试基于私有类的行为
- 在类 gtest/gmock 进行单元测试时模拟成员函数C++
- 在单元测试中,如何在不使用 operator== 的情况下比较两个对象,这可能会错过新成员?
- C++14 对私有成员进行单元测试(取消)分配
- 如何测试是否定义了结构的成员 (c++)
- 测试适用于成员变量的成员函数
- C++ / GoogleTest - 如何测试正在测试的类的成员变量
- 使用C ,使用SFINAE测试静态成员的存在,返回错误的值
- 通过剥离可变宏/模板/函数对来测试成员函数
- 如何在Google测试(gtest)中使用fixture成员值运行参数化测试
- 单元测试 - 设置私人成员以获得所需的对象状态
- C ++静态成员,我该如何测试它
- TDD:确定地测试成员初始化,给定C++中未定义的行为
- C++预处理器测试类成员是否存在
- C++在测试成员变量是否等于NULL时冻结
- 在没有朋友的情况下测试C++中的私有类成员
- 获得在C++中测试的私人成员的访问权限
- 使用递归的成员测试