Написать рекурсивную функцию, выводящую ряд чисел от n до 1 и обратно - C (СИ)
Формулировка задачи:
Здравствуйте. Помогите пожалуйста решить задачу. Требуется написать рекурсивную функцию принимающую целое число n и выводящую ряд чисел от n до 1 и обратно.Пример для n=5 , 5 4 3 2 1 2 3 4 5 У меня выходит нечто совсем неудобоваримое.....
int descending_and_ascending_series(int n); void main () { int n,num,subtrahend=0; printf("Please enter the integer number: "); scanf("%d", &n); num = n; while (num>1){ subtrahend++; printf("%d\n", descending_and_ascending_series(n)); } } int descending_and_ascending_series(int n) { int num = n; int subtrahend = 0; num -=subtrahend; if (num <= 1) return 1; else return descending_and_ascending_series((n -subtrahend)); }
Решение задачи: «Написать рекурсивную функцию, выводящую ряд чисел от n до 1 и обратно»
textual
Листинг программы
#include <stdio.h> void down_and_up(unsigned n) { printf("%d ", n); if ( n > 1 ) { down_and_up(n - 1); printf("%d ", n); } } int main(void) { unsigned n; while ( printf("\nNumber: ") && scanf("%u", &n) == 1 && n ) down_and_up(n); return 0; }
Объяснение кода листинга программы
В данном коде реализована рекурсивная функция down_and_up, которая выводит на экран числа от n до 1 и обратно.
- Включаем заголовочный файл stdio.h, который содержит необходимые для работы функции printf и scanf.
- Создаём функцию down_and_up, принимающую целочисленный аргумент n.
- Внутри функции выводим число n на экран с помощью printf, используя строку
%d
для форматирования вывода. - С помощью условного оператора if проверяем, больше ли n единицы.
- Если условие истинно, то вызываем функцию down_and_up рекурсивно с аргументом n — 1 и выводим число n на экран.
- В основной функции main с помощью цикла while считываем натуральное число n с помощью scanf и выводим его на экран.
- Пока пользователь вводит корректные значения n, вызываем функцию down_and_up и выводим её результат на экран.
- После выхода из цикла while возвращаем 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д