Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2025, 16:34   #1
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию Функция выводит натуральные числа рекурсией

а)от самого большого до самого маленького
б)от самого маленького до самого большого

Код:
 void recNatNumbers(int i)
{
    if (i> 1)
        recNatNumbers(i- 1);
    std::cout << i;
}
От маленького к большому я сделал а как обратно я не знаю. Нужна ваша помощь.
vovamakarovych вне форума Ответить с цитированием
Старый 11.01.2025, 16:51   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,821
По умолчанию

Абсолютно также, только не -, а + и не >, а <
p51x вне форума Ответить с цитированием
Старый 11.01.2025, 17:14   #3
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Абсолютно также, только не -, а + и не >, а <
так? но оно так последнее значение выводит и всё.
Код:
 if (i < 1)
     recNatNumbers(i + 1);
 std::cout << i;
vovamakarovych вне форума Ответить с цитированием
Старый 11.01.2025, 17:15   #4
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию

и как 2 условия объединить в одной функции?
vovamakarovych вне форума Ответить с цитированием
Старый 11.01.2025, 18:32   #5
DeepFlake
Форумчанин
 
Регистрация: 16.05.2024
Сообщений: 186
По умолчанию

Код:
#include <iostream>

const int max_number = 10;
void Naturals( int x )
{
    if ( x>max_number)
    { }
    else
    {
        std::cout<<x<<std::endl;
        Naturals( ++x );
    }
}

int main() {
    Naturals( 1 );
    return 0;
}
DeepFlake вне форума Ответить с цитированием
Старый 11.01.2025, 18:43   #6
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию

Цитата:
Сообщение от DeepFlake Посмотреть сообщение
Код:
#include <iostream>

const int max_number = 10;
void Naturals( int x )
{
    if ( x>max_number)
    { }
    else
    {
        std::cout<<x<<std::endl;
        Naturals( ++x );
    }
}

int main() {
    Naturals( 1 );
    return 0;
}
так у Вас не правильно работает.

Код:
 Naturals( 1 );
- как параметр в функцию передаем максимальное значение. и мне нужно чтобы от этого числа выводилось до 1
vovamakarovych вне форума Ответить с цитированием
Старый 11.01.2025, 18:55   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,810
По умолчанию

Цитата:
Сообщение от vovamakarovych Посмотреть сообщение
Функция выводит натуральные числа рекурсией
а)от самого большого до самого маленького
б)от самого маленького до самого большого
Самое маленькое натуральное число это 1. Самого большого натурально числа не существует, так как множество натуральных чисел бесконечно. Уточните задание, в данной формулировки оно лишено смысла.
Arigato вне форума Ответить с цитированием
Старый 11.01.2025, 19:10   #8
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Самое маленькое натуральное число это 1. Самого большого натурально числа не существует, так как множество натуральных чисел бесконечно. Уточните задание, в данной формулировки оно лишено смысла.
в параметр функции задается значение максимальное, то есть от 1 до i. Я не знаю как вывести чтобы выводилось от i до 1. От 1 к i я сделал.
vovamakarovych вне форума Ответить с цитированием
Старый 11.01.2025, 20:50   #9
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,810
По умолчанию

Цитата:
Сообщение от vovamakarovych Посмотреть сообщение
Я не знаю как вывести чтобы выводилось от i до 1. От 1 к i я сделал.
Просто выводите i до рекурсивного вызова, а не после:
Код:
void recNatNumbers2(int i)
{
    if (i>= 1){
        std::cout << i << std::endl;
        recNatNumbers(i- 1);
    }
}
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция printNumbersInterval(), которая последовательно выводит числа от 1 до 20, с интервалом между числами 100 мс. Мария19043 JavaScript, Ajax 0 16.04.2020 19:15
Даны натуральные числа n и m. Найти такие натуральные p и q, не имеющих общих делителей, что p/q=m/n CLUB17 Общие вопросы C/C++ 1 12.12.2018 22:34
дан двумерный массив пользователь вводит натуральные числа,массив размером N на M .Все числа из которых можно извлечь корень извлекаются все числа меньше нуля заменяются их модулем qqq`` Паскаль, Turbo Pascal, PascalABC.NET 9 02.10.2017 17:11
Даны натуральные числа N, M. Найти все натуральные числа, меньшие N, квадрат суммы цифр которых равен M Namatrasnik Помощь студентам 1 03.11.2016 23:29
программа суммирует натуральные числа от 1 до 50 и выводит результат вычисления на экран xxasb07 Паскаль, Turbo Pascal, PascalABC.NET 2 18.11.2008 10:32