【发布时间】:2016-10-01 00:13:07
【问题描述】:
我无法理解递归。我在这里寻找一些反馈,看看这个程序的外观。
问题 ::: 编写一个名为 isMember 的递归布尔函数。该函数应该接受三个参数:一个整数数组、一个表示数组中元素数量的整数和一个要搜索的整数值。如果在数组中找到该值,则该函数应返回 true,如果未找到该值,则该函数应返回 false。演示在要求用户输入数字数组和要搜索的值的程序中使用该函数。
我有什么::
#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 search\n";
cin >> numSearch;
bool value = isMember(elementz,SIZE,numSearch);
if(value ==1)
cout << "Element is found\n";
else
cout << "Element not found\n";
return 0;
}
bool isMember(int arr[], int sizze, int num)
{
if(arr[sizze] == num)
return true;
else
isMember(arr,sizze -1, num);
}
【问题讨论】:
-
您的 isMember 函数需要一个错误的案例(当 sizze 为 -1 时)。除此之外 - 是的,它是一个递归函数。它应该返回 isMember(arr, sizze - 1, num) 而不是仅仅调用 isMember(arr, sizze - 1, num) 以便返回值可以在调用堆栈中向上移动到原始调用函数。