gpt4 book ai didi

c++ - 输入数组并查找数字是否在该数组中(全部使用递归)c++

转载 作者:行者123 更新时间:2023-11-28 05:52:23 25 4
gpt4 key购买 nike

#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 函数是否也正确(对我来说似乎工作正常)。谢谢。

最佳答案

递归函数有两个终止条件。

  1. 如果您到达数组末尾,您还没有找到数字 n 并且返回 0

  2. 如果找到数字 n 返回 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;
}

关于c++ - 输入数组并查找数字是否在该数组中(全部使用递归)c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34966439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com