Найти произведение отрицательных элементов массива, используя рекурсию - 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 выводится на экран. Коды функций и переменные:
-
include
-
include
- 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д