[英]inputting an array and finding if a number is in that array (all using recursion) c++
#include <iostream>
#include <cstdlib>
using std:: cin;
using std:: cout;
using std:: endl;
const int N=10;
void readarray(int array[], int N);
int find_num(int array[], int size);
int main ()
{
int array[N];
readarray (array, N);
cout << find_num(array, N);
return EXIT_SUCCESS;
}
void readarray(int array[], int N)
// this function is for inputting an array also using recursion
{
int i=0;
if (i < N)
{
cin >> array[i];
readarray(array+1, N-1);
}
}
int find_num(int array[], int size)
// this function is for checking if a number is in the array that
// was inputted
{
int n;
cin >> n;
if (n==array[0])
return 1;
else if (n!=array[0]){
find_num(array+1, size-1);
return 1;
}
else return 0;
}
顯然,程序的全部目的是僅使用遞歸。 我第二個功能有問題,該功能應該檢查是否在數組中找到數字。 如果在數組中找到該數字,則輸出將為1,否則將為0。問題是,似乎它接受的輸入多於應有的數量,並且始終輸出數字1(無論該數字是否找到或找不到)。 我相信我缺少一小步。 我也想問一下void函數是否也正確(似乎對我來說很好用)。 謝謝。
您的遞歸函數有兩個終止條件。
如果到達數組的末尾,則找不到數字n
並return 0
。
如果找到數字n
return 1
。
如果未到達數組末尾且未找到編號,請調用函數rcursive,獲取結果並返回。
除此之外,您要搜索的數字必須是函數find_num
的輸入。 您不想一次又一次地問一個號碼。
int find_num(int n, int array[], int size)
{
if ( size == 0 )
return 0; // end of array, n was not found
if ( n == array[0] )
return 1; // n was found
return find_num( n, array+1, size-1 ); // test next element of array
}
void readarray(int array[], int N)
{
if ( N > 0 )
{
cin >> array[0];
readarray( array+1, N-1 );
}
}
int main ()
{
int array[N];
readarray( array, N );
int n;
cin >> n;
cout << find_num( n, array, N );
return EXIT_SUCCESS;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.