Может кто-нибудь помочь мне с рекурсивной функцией в C ++? - PullRequest
0 голосов
/ 30 марта 2020

Может ли кто-нибудь помочь мне понять рекурсивную функцию?

У меня есть это упражнение, которое говорит мне, чтобы узнать, совпадает ли первая половина числа с другой. Пример (123123)

#include <iostream>
using namespace std;

bool half(int arr[], int inf, int sup)
{
   if(inf >= sup)
      return true;
   if(arr[inf] != arr[sup])
      return false;
   else
      return half(arr, inf+1, sup-1);
}

int main()
{
    int n;
    cin >> n;

    int arr[n];
    for(int i=0; i<n; i++)
    {
        cin >> arr[i];
    }


    if(half)
        cout << "YES";
    else
        cout << "NO";
}

Спасибо за ваше время, и у вас есть кое-что попроще, просто скажите!

1 Ответ

1 голос
/ 30 марта 2020
if(half)

должно быть

if (half(arr, 0, n))

Функции (рекурсивные или нет) не работают, если вы не вызываете их.

Также ваш код проверяет, массив - это палиндром например {1,2,3,3,2,1}, он не выполняет то, что вы просите в своем вопросе.

...