Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для aidoqa
587 / 101 / 2
Регистрация: 08.02.2011
Сообщений: 842

Программирование рекурсий

02.03.2012, 18:12. Показов 2806. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Функция Аккермана. Даны неотрицательные целые числа n, m. Вычислить A(n,m), где (см рисунок)


Использовать программу, включающую рекурсивную функцию.
Миниатюры
Программирование рекурсий  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2012, 18:12
Ответы с готовыми решениями:

Программирование рекурсий.
Здравствуйте) помогте кто знает? Задание.Числа Фибоначчи u0, u1, u2, … определяются следующим образом: u0=0, u1=1, un= un-1+ un-2(n=2,...

Программирование рекурсий. Преобразование числа в двоичное
Дано целое неотрицательное число n. Преобразовать его в двоичное число.

Программирование рекурсий. Преобразование числа в двоичное
Дано целое неотрицательное число n. Преобразовать его в двоичное число.

27
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
02.03.2012, 18:24
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//
//  main.cpp
//  test
//
//  Created by Ilya Lavrenov on 3/2/12.
//  Copyright (c) 2012 [email]sandye64@gmail.com[/email]. All rights reserved.
//
 
#include <iostream>
 
int A(unsigned int n, unsigned int m)
{
    unsigned int return_value;
    
    if (!n)
        return_value = m + 1;
    else
        if (!m && n)
            return_value = A(n - 1, 1);
        else
            return_value = A(n - 1, A(n, m - 1));
    
    return return_value;
}
 
int main(int argc, const char * argv[])
{
 
    unsigned int m, n;
    std::cout << "Введите значения m, n" << std::endl;
    std::cin >> m >> n;
    std::cout << "Результат: " << A(n, m) << std::endl;
    return 0;
}
1
 Аватар для aidoqa
587 / 101 / 2
Регистрация: 08.02.2011
Сообщений: 842
02.03.2012, 22:24  [ТС]
sandye51, программа не вычисляет m,n/
можно ли программу сделать чез int main()
p.s. чу чуть по проще)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
03.03.2012, 05:33
aidoqa, я вижу это задание вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
int A(int n, int m)
{
    int ret = m + 1;
    if(n != 0)
    if(m == 0)
        ret = A(n - 1, 1);
    else
        ret = A(n - 1,A(n, m - 1));
    cout<<"m = "<<m<<" n = "<<n<<" A = "<<ret<<endl;
    return ret;
}
 
 
int main()
{
    int m, n;
    cout<<"Enter m : ";cin>>m;
    cout<<"Enter n : ";cin>>n;
    A(m,n);
    system("pause");
    return 0;
}
Проверял на вводе 3 4 - программа сидит в рекурсии секунд 10
Миниатюры
Программирование рекурсий  
1
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
03.03.2012, 06:39
А я вот как то так
C++
1
2
3
4
5
6
7
8
9
int A( int n, int m ) {
    if ( n == 0 )
    return m + 1;
 
    if ( m == 0 )
    return A( n - 1, 1 );
 
    return A( n - 1, A( n, m - 1));
}
1
 Аватар для aidoqa
587 / 101 / 2
Регистрация: 08.02.2011
Сообщений: 842
04.03.2012, 13:06  [ТС]
-=ЮрА=-, почему то при проверке ваша команда не останавливается(проверял на DEV c++)
можно ли ее как нибудь остановить?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
04.03.2012, 15:53
При каких значениях?
0
 Аватар для aidoqa
587 / 101 / 2
Регистрация: 08.02.2011
Сообщений: 842
04.03.2012, 16:03  [ТС]
при любых, хоть что вожу он сам перебирает несколько значений?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
04.03.2012, 17:04
Каких любых?) Проверил, все нормально. Функция растет очень быстро, при n == 4 и m == 1 получается 65533. Дальше вообще огромные числа.
0
 Аватар для aidoqa
587 / 101 / 2
Регистрация: 08.02.2011
Сообщений: 842
04.03.2012, 17:13  [ТС]
как можно сделать поменьше?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
04.03.2012, 17:15
Что поменьше?) Выходное значение? Вводить n < 4
1
 Аватар для aidoqa
587 / 101 / 2
Регистрация: 08.02.2011
Сообщений: 842
04.03.2012, 17:23  [ТС]
Toshkarik, покажи скрин этой программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
int A(int n, int m)
{
        int ret = m + 1;
        if(n != 0)
        if(m == 0)
                ret = A(n - 1, 1);
        else
                ret = A(n - 1,A(n, m - 1));
        cout<<"m = "<<m<<" n = "<<n<<" A = "<<ret<<endl;
        return ret;
}
 
 
int main()
{
        int m, n;
        cout<<"Enter m : ";cin>>m;
        cout<<"Enter n : ";cin>>n;
        A(m,n);
        system("pause");
        return 0;
}
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
04.03.2012, 17:50
Просто поменяй вот так
C++
1
2
3
4
int m, n;
cout<<"Enter n : ";cin>>n;
cout<<"Enter m : ";cin>>m;
A(n,m);
0
 Аватар для aidoqa
587 / 101 / 2
Регистрация: 08.02.2011
Сообщений: 842
04.03.2012, 18:14  [ТС]
при вводе цифр (0,1) (1,0) (1,1) вроде все нормально если например (2,2) то что то не(или так должно и быть)
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
04.03.2012, 19:03
Проверил, все правильно, при 2, 2 результат 7. Вот если что таблица некоторых значений Функция Аккермана
0
 Аватар для aidoqa
587 / 101 / 2
Регистрация: 08.02.2011
Сообщений: 842
04.03.2012, 19:08  [ТС]
почему у меня тогда сразу вот так идет?см(рисунок)
Миниатюры
Программирование рекурсий  
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
04.03.2012, 19:14
Все правильно, если не нужны промежуточные значения то удали в функции строку cout...
1
 Аватар для aidoqa
587 / 101 / 2
Регистрация: 08.02.2011
Сообщений: 842
04.03.2012, 19:20  [ТС]
Toshkarik,
какую именно если удалить
C++
1
 cout<<"m = "<<m<<" n = "<<n<<" A = "<<ret<<endl;
то см(рисунок321), другие если удалять то ошибка)
Миниатюры
Программирование рекурсий  
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
04.03.2012, 19:27
Все верно, если не нужны промежуточные значения удали строку
C++
1
cout<<"m = "<<m<<" n = "<<n<<" A = "<<ret<<endl;
в функции, а в main измени
C++
1
A(n,m);
на
C++
1
cout << A(n,m) << endl;
0
 Аватар для aidoqa
587 / 101 / 2
Регистрация: 08.02.2011
Сообщений: 842
04.03.2012, 19:31  [ТС]
Toshkarik, можешь готовый код закинуть, у меня что не получается(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2012, 19:31
Помогаю со студенческими работами здесь

Программирование рекурсий: отделить цифры данного числа и сложить межу собой
Дано целое неотрицательное число n. Отделить цифры данного числа и сложить межу собой.

Посчитать количество рекурсий
Здравствуйте. Как из функции вывести 2 значения? Или другим методом посчитать количество рекурсий? Recur4.Описать рекурсивную функцию...

Выбор кафедры в дальнейшей жизни: прикладное программирование VS системное программирование
Сразу извиняюсь что очень не по теме но всё же лучшего форума для этого вопроса я не нашел. Итак я вступаю во взрослую жизнь и давно...

Исключение рекурсий
Здравствуйте! у меня такая проблема(задача) запуск всех исполняемых файлов в указанном в каталоге. Каталог вводится в качестве...

Максимальное количество рекурсий
Есть функция, которая вызывает саму себя, причем делает она это крайне много раз. Вопрос: какой предел вызова функцией саму себя? А то в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru