Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
#1

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

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

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


Использовать программу, включающую рекурсивную функцию.
Миниатюры
Программирование рекурсий  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2012, 18:12     Программирование рекурсий
Посмотрите здесь:

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

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

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

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

программирование на С++ - C++
Помогите пожалуйста решить 6 задачек в С++ (или хотя бы несколько), вопрос жизни и смерти... 1. Дано вещественное число X и...

Программирование в С++ - C++
Дані цілі числа а, b, c, що є сторонами деякого трикутника. Перевірити істинність висловлювання: «Трикутник із сторонами а, b, с є...

Программирование на C++ - C++
Всем привет.Сразу приношу извинение администрации, если я не там создал топик или он содержит неправильное содержание:)Думаю,эта тема будет...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
02.03.2012, 18:24     Программирование рекурсий #2
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;
}
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
02.03.2012, 22:24  [ТС]     Программирование рекурсий #3
sandye51, программа не вычисляет m,n/
можно ли программу сделать чез int main()
p.s. чу чуть по проще)
-=ЮрА=-
Заблокирован
Автор FAQ
03.03.2012, 05:33     Программирование рекурсий #4
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
Миниатюры
Программирование рекурсий  
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
03.03.2012, 06:39     Программирование рекурсий #5
А я вот как то так
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));
}
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
04.03.2012, 13:06  [ТС]     Программирование рекурсий #6
-=ЮрА=-, почему то при проверке ваша команда не останавливается(проверял на DEV c++)
можно ли ее как нибудь остановить?
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
04.03.2012, 15:53     Программирование рекурсий #7
При каких значениях?
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
04.03.2012, 16:03  [ТС]     Программирование рекурсий #8
при любых, хоть что вожу он сам перебирает несколько значений?
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
04.03.2012, 17:04     Программирование рекурсий #9
Каких любых?) Проверил, все нормально. Функция растет очень быстро, при n == 4 и m == 1 получается 65533. Дальше вообще огромные числа.
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
04.03.2012, 17:13  [ТС]     Программирование рекурсий #10
как можно сделать поменьше?
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
04.03.2012, 17:15     Программирование рекурсий #11
Что поменьше?) Выходное значение? Вводить n < 4
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
04.03.2012, 17:23  [ТС]     Программирование рекурсий #12
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;
}
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
04.03.2012, 17:50     Программирование рекурсий #13
Просто поменяй вот так
C++
1
2
3
4
int m, n;
cout<<"Enter n : ";cin>>n;
cout<<"Enter m : ";cin>>m;
A(n,m);
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
04.03.2012, 18:14  [ТС]     Программирование рекурсий #14
при вводе цифр (0,1) (1,0) (1,1) вроде все нормально если например (2,2) то что то не(или так должно и быть)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2012, 19:03     Программирование рекурсий
Еще ссылки по теме:

Программирование на С++ - C++
Помогите дорешать задачу в С++: Дано целое число N и набор из N целых чисел. Вывести номера тех чисел в наборе, которые больше своего...

программирование на С - C++
номер 223 д) спасибо большое заранее

Программирование на С++ - C++
Помогите решить задачу в C++ (Visual С++ 9.0 Express Edition, 2008). Дано целое число N и набор из N целых чисел. Вывести номера тех...

Программирование на С - C++
Может кто помочь составить код по заданию ? &quot;Написать программу,которая проверяла бы ,упорядочен ли массив по неубыванию (хi&lt;=xi+1), ...

программирование - C++
Помогите мне с заданиями


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

Или воспользуйтесь поиском по форуму:
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
04.03.2012, 19:03     Программирование рекурсий #15
Проверил, все правильно, при 2, 2 результат 7. Вот если что таблица некоторых значений Функция Аккермана
Yandex
Объявления
04.03.2012, 19:03     Программирование рекурсий
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru