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

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

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

составить рекурсивную функцию, которая определяет величину Y, как произведение отрицательных элементов массива X, расположенных после первого положительного элемента. не могу понять в чем ошибка..
Листинг программы
  1. int velY(int i)
  2. {
  3. int x[5],k;
  4. int y=1;
  5. if (x>0)
  6. {
  7. k=i;
  8. for (i=k+1;i<5;i++)
  9. {
  10. if (x<0)
  11. y=y*x;
  12. return y;
  13. }
  14. }
  15. else velY(i+1);
  16. printf("]",y);
  17. _getch();
  18. }

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

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

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

В данном коде на языке 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы