Найти произведение отрицательных элементов массива, используя рекурсию - C (СИ)
Формулировка задачи:
- 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();
- }
Решение задачи: «Найти произведение отрицательных элементов массива, используя рекурсию»
- #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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д