Написать рекурсивную функцию, выводящую ряд чисел от 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, что означает успешный конец работы программы.