Я прохожу курс «Введение в программирование», и большая часть материала вбивается в наши головы через myProgrammingLab. У меня небольшие проблемы с концепцией рекурсии... Это как бы попало для меня. Эта конкретная проблема поставила меня в тупик. Когда я отправляю свой код, он предлагает мне
CTest1.cpp: In function 'bool isPalindrome(int*, int)':
CTest1.cpp:9: error: invalid conversion from 'int' to 'int*'
CTest1.cpp:9: error: initializing argument 1 of 'bool isPalindrome(int*, int)'"
в качестве совета, который, уверяю вас, не очень полезен. Ржу не могу
Я думаю, что моя главная проблема заключается в том, когда я добираюсь до фактической рекурсии. Я знаю, что что-то не так, но... Если бы вы могли просто указать мне правильное направление, я был бы вам очень признателен.
«Палиндром массива» — это массив, который при перестановке элементов остается неизменным (т. е. элементы массива одинаковы при просмотре вперед или назад).
Напишите рекурсивную функцию с логическим значением isPalindrome, которая принимает массив с целочисленным значением и количество элементов и возвращает, является ли массив палиндромом.
Массив является палиндромом, если: массив пуст (0 элементов) или содержит только один элемент (который, следовательно, совпадает при перестановке), или первый и последний элементы массива совпадают, а остальная часть массива ( т. е. элементы со второго по предпоследний) образуют палиндром.
Мой код до сих пор:
bool isPalindrome(int arr[], int n){
if (n == 0 || n == 1)
{
return true;
}
else if (arr[n-1] == isPalindrome(arr[((n-1) - n) +1 ], n))
{
return true;
}
else {
return false;
}
}
ИЗМЕНИТЬ:
Теперь я изменил свою проблемную строку на
else if (arr[n-1] == isPalindrome(arr[], n-1))
Теперь я понимаю подсказку: «Мы думаем, что вы, возможно, захотите использовать +». Я не вижу, где здесь применимо добавление. Я не думаю, что речь идет об увеличении, потому что оно указывает на увеличение как «++», как в коде.
Мне также дается сообщение об ошибке:
CTest1.cpp: в функции 'bool isPalindrome(int*, int)': CTest1.cpp:9: ошибка: ожидаемое первичное выражение перед токеном ']'
Вторая строка выдает ошибку, потому что скобки пусты в моем первом аргументе?
arr[((n - 1) - n) + 1]
, если вам требуетсяint arr[]
? - person Benjamin Bannier   schedule 13.11.2014