Написать функцию, удаляющего числа из массива со сдвигом значений - C (СИ)
Формулировка задачи:
дано такое задание Написать функцию, удаляющего числа из массива со сдвигом значений. (образованные пустые места заполняются нулями)
(было 1 2 3 4 5 стало 1 2 4 5 0)
и вот эту функцию нужно написать обязательно через рекурсию... я вообще понятия не имею как это делать... пожалуйста напишите или намекните как-нибудь что тут делать.
без рекурсии в принципе могу написать. а вот с ней не знаю как
Решение задачи: «Написать функцию, удаляющего числа из массива со сдвигом значений»
textual
Листинг программы
#include <string.h>
/* Удаляет из массива array размером count элементов значение value сдвигая идущие за ним элементы
и вставляя в конец массива соответствующее количество нулей.
Значение value не может быть нулём. */
void recremove(int * array, const size_t count, const int value) {
if ( count ) { /* если в массиве есть элементы */
if ( *array == value ) { /* если значение первого элемента совпадает с заданным */
memmove(array, array + 1, sizeof(int) * ( count - 1 )); /* сдвинуть идущие за ним на одну позицию влево */
array[count - 1] = 0; /* обнулить последний элемент в массиве */
recremove(array, count, value); /* вызвать функцию с теми же параметрами - нужные значения могут подряд идти */
}
else
recremove(array + 1, count - 1, value); /* вызвать функцию для следующего элемента (array + 1),
соответственно элементов будет на один меньше ( count - 1 ) */
}
}