rama___ Ответов: 1

Может кто нибудь пожалуйста помочь мне с моим заданием кодирования на языке Си это всего два вопроса


пожалуйста помочь
речь идет о рекурсии и умножении четных чисел

Что я уже пробовал:

int fn(){
int n;
n = rand() % 900 + 100;
printf("%d\n", n);
возвращает 0;
}

Afzaal Ahmad Zeeshan

Вы забыли упомянуть эти 2 вопроса, а также проблемы, которые у вас возникли.

Patrice T

А вопросы есть ?

1 Ответов

Рейтинг:
0

OriginalGriff

В этом коде нет рекурсии: если fn если бы он был рекурсивным, то он не работал бы, так как нет никакого способа "ограничить" его от бесконечной рекурсии - вам действительно нужен параметр, чтобы сделать это, или ваше приложение просто снесет верхнюю часть стека и рухнет.
Это рекурсивно:

int factorial(int n)
   {
   if (n <= 1) return 1;
   return n * factorial(n - 1);
   }
Потому что он называет factorial функция изнутри factorial функция. Поскольку значение параметра изменяется каждый раз, когда он вызывается, ограничивающая проверка "один или меньше" предотвращает бесконечную рекурсию и в конечном итоге дает правильный результат.

Я бы посоветовал вам вернуться к вашим курсовым заметкам для последней лекции и вашему домашнему заданию и прочитать их снова, очень внимательно!