我在理解遞歸時遇到了困難。我在這裏尋找一些反饋,看看這個程序的外觀。使用遞歸的成員測試
問題::: 寫一個名爲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),以便返回值可以將調用堆棧向上移至原始調用函數。 – user3486184