Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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


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

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

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

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

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

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

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

27
sandye51
программист С++
686 / 588 / 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;
}
1
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
02.03.2012, 22:24  [ТС] #3
sandye51, программа не вычисляет m,n/
можно ли программу сделать чез int main()
p.s. чу чуть по проще)
0
-=ЮрА=-
Заблокирован
Автор 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
1
Миниатюры
Программирование рекурсий  
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 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));
}
1
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
04.03.2012, 13:06  [ТС] #6
-=ЮрА=-, почему то при проверке ваша команда не останавливается(проверял на DEV c++)
можно ли ее как нибудь остановить?
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
04.03.2012, 15:53 #7
При каких значениях?
0
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
04.03.2012, 16:03  [ТС] #8
при любых, хоть что вожу он сам перебирает несколько значений?
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
04.03.2012, 17:04 #9
Каких любых?) Проверил, все нормально. Функция растет очень быстро, при n == 4 и m == 1 получается 65533. Дальше вообще огромные числа.
0
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
04.03.2012, 17:13  [ТС] #10
как можно сделать поменьше?
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
04.03.2012, 17:15 #11
Что поменьше?) Выходное значение? Вводить n < 4
1
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;
}
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 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);
0
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
04.03.2012, 18:14  [ТС] #14
при вводе цифр (0,1) (1,0) (1,1) вроде все нормально если например (2,2) то что то не(или так должно и быть)
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
04.03.2012, 19:03 #15
Проверил, все правильно, при 2, 2 результат 7. Вот если что таблица некоторых значений Функция Аккермана
0
04.03.2012, 19:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2012, 19:03
Привет! Вот еще темы с ответами:

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

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

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

3d программирование - C++
Подскажите, пожалуйста. При помощи чего и как создать в С++ проект с возможностью 3d программирования? Если не сложно, скиньте программку,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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