Найти произведение отрицательных элементов массива, используя рекурсию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

составить рекурсивную функцию, которая определяет величину Y, как произведение отрицательных элементов массива X, расположенных после первого положительного элемента. не могу понять в чем ошибка..
int velY(int i)
{
int x[5],k;
int y=1;
if (x>0)
{
k=i;
for (i=k+1;i<5;i++)
{
if (x<0)
y=y*x;
return y;
}
 
}
else velY(i+1);
printf("]",y);
_getch();
}

Решение задачи: «Найти произведение отрицательных элементов массива, используя рекурсию»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
 
int g_mul = 1;
bool b = false;
 
void mulY(int i, int* X, int n)
{
    if (i >= n) return;
    if (X[i] > 0) { b = true; ++i; }
    g_mul*=(b != false && X[i] < 0) ? X[i] : 1;
    mulY(++i, X, 10);
}
 
int main()
{
    int X[10] = { -3, 5, 6, -7, -2, -9, -8, -3, 4, 0 };
 
    mulY(0, X, 10);
 
    printf("mul = %d\n",g_mul);
 
    _getch();
 
    return 0;
}

Объяснение кода листинга программы

В данном коде на языке C реализована функция mulY, которая рекурсивно перебирает элементы массива X. Если элемент больше нуля, то переменная b устанавливается в true и происходит переход к следующему элементу. Если элемент меньше нуля, то его значение умножается на переменную g_mul. После чего рекурсия продолжается до тех пор, пока не будет достигнут последний элемент массива. В функции main создается массив X, инициализированный отрицательными и нулевыми значениями. Затем вызывается функция mulY, передавая в нее первый элемент массива X и его размер. После выполнения всех операций, значение переменной g_mul выводится на экран. Коды функций и переменные:

  1. include

  2. include

  3. int g_mul = 1;
  4. bool b = false;
  5. void mulY(int i, int* X, int n)
  6. {
  7. if (i >= n) return;
  8. if (X[i] > 0) { b = true; ++i; }
  9. g_mul*=(b != false && X[i] < 0) ? X[i] : 1;
  10. mulY(++i, X, 10);
  11. }
  12. int main()
  13. {
  14. int X[10] = { -3, 5, 6, -7, -2, -9, -8, -3, 4, 0 };
  15. mulY(0, X, 10);
  16. printf(mul = %d\n,g_mul);
  17. _getch();
  18. return 0;
  19. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы