С помощью рекурсии вывести максимальное число последовательности и нечётные числа - C (СИ)
Формулировка задачи:
Дана последовательность чисел, вводится с клавиатуры, ввод завершается введением нуля. С помощью рекурсии вывести максимальное число этой последовательности и нечётные числа. Условие: функция не возвращает значение, а сразу выводит результат на экран. Основная программа состоит только из вызова этой рекурсии
Решение задачи: «С помощью рекурсии вывести максимальное число последовательности и нечётные числа»
textual
Листинг программы
void Nechet(int);
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "rus");
printf("Введите числа:\n");
Nechet(0);
return 0;
}
void Nechet(int j)
{
int x;
j++;
scanf("%d", &x);
if (x!=0)
{
Nechet(j);
}
if ((x % 2) != 0)
{
printf("x=%d\n", x);
}
}
Объяснение кода листинга программы
Вывод нечётных чисел последовательности, вероятно, будет осуществляться с помощью рекурсии. Однако, в данном коде, есть проблема с входными данными, которые не учитываются в условии остановки рекурсии. В результате чего программа будет выполняться бесконечно. Поскольку код не полностью представлен, точное объяснение может быть затруднительным. Однако, основываясь на предоставленном коде, можно сделать следующие выводы:
- Функция
Nechet(int j)принимает целочисленный аргументjи использует его как индекс для чтения следующего числа из последовательности. - Если введенное число не равно нулю, вызывается рекурсивная функция
Nechet(j), что, вероятно, должно продолжать выводить следующие числа последовательности. - Если введенное число делится на 2 без остатка (т.е. является чётным), то ничего не происходит.
- Если введенное число не делится на 2 без остатка (т.е. является нечётным), то оно выводится на экран. Поскольку в коде нет условия остановки для рекурсии, программа будет выполняться бесконечно, пока не будет введено ноль.