"Текущие выпуски № 3"
- «Во-первых, пишу ли я рекурсивно или нет».
Да, ваша reverse()
функция рекурсивная. Любая функция, которая вызывает себя, является рекурсивной. Однако очень легко написать рекурсивную функцию, которая работает неправильно, плохо обрабатывает соответствующие случаи, портит управление памятью или работает бесконечно. Программирование на C
требует большой осторожности; Написание рекурсивных функций требует еще большей осторожности.
Как отмечено в комментариях, обнаружение палиндрома не требует рекурсивной функции. Как упражнение, я полагаю, что все в порядке, но (1) если бы вы столкнулись с этой проблемой по-настоящему, вам было бы гораздо лучше подойти к ней совершенно по-другому, и (2) есть гораздо лучшие проблемы для изучения рекурсии из-за будучи более простым и более подходящим для рекурсивного подхода. Google здесь твой друг.
- "какое сравнение строк мне нужно сделать в этой части кода, чтобы определить, палиндром это или нет"
Главное, что вам нужно сделать, это сравнить две вещи, которые могут отличаться. Как отмечают комментарии, str1 == str1
всегда true
. Вы указываете, что это код заполнителя (так что он компилируется). Лучший код заполнителя будет:
if (1) { // placeholder code so that it compiles
Это бы устранило немного путаницы.
Что касается сравнения, которое вам нужно сделать, просто сделайте копию str1
перед ее изменением. Затем сравните предварительно измененную копию с измененным значением. Но будьте уверены, что знаете, что делаете, когда делаете копию str1
. Поскольку для вас еще не было очевидным, что вам нужно это делать, для вас может не быть очевидным, как сделать это. Это одна из ловушек C
, которую легко ошибиться. Опять же, Google поможет вам здесь.
- "если я захочу зациклить код, чтобы он продолжал задавать начальный вопрос после ввода строки, как бы я это сделал? Это цикл for или цикл while?"
Любой из них будет работать, поскольку написать цикл for
, который действует как цикл while
, тривиально. Реальный вопрос в том, при каких обстоятельствах вы бы вышли из цикла? Ответ на этот вопрос укажет вам как наилучший тип цикла, так и условие цикла для его предоставления.