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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
#1

Разработать рекурсивную функцию - C++

15.12.2010, 17:53. Просмотров 2010. Ответов 16
Метки нет (Все метки)

Разработать рекурсивную функцию нахождения значения функции Аккермана, которая определяется для всех неотрицательных целых аргументов m и n следующим образом:
А(0,n)=n+1;
A(m,0)=A(m-1,1), если (m>0);
A(m,n)=A(m-1,A(m,n-1)), если (m, n >0).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2010, 17:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разработать рекурсивную функцию (C++):

Разработать рекурсивную функцию - C++
Разработать рек. функцию , возвращающая значение: для вычисления суммы цифр в строке. С помощью этой функ. определить в какой из двух строк...

Разработать рекурсивную функцию, возвращающую значение: - C++
для вычисления значения функции Аккермана для неотрицательных чисел n и m. Функция Аккермана определяется следующим образом:

разработать не рекурсивную функцию,возвращающее значение: - C++
для вычисления количества цифр в строке;с помощью данной функции определить,в каком из двух предложений цифр больше

Разработать рекурсивную функцию, не возвращающую значений - C++
Даны первый член и знаменатель геометрической прогрессии. Написать рекурсивную функцию для нахождения n-го члена и суммы п первых членов...

Разработать рекурсивную функцию, возвращающую значение - C++
Разработать рекурсивную функцию, возвращающую значение: для вычисления значения функции:

Разработать рекурсивную функцию, для вычисления числа сочетаний - C++

16
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 18:51 #2
C++
1
2
3
4
5
6
7
8
int rec(int m, int n)
{
    if(m==0)
        return n+1;
    if(n==0)
        return rec(m-1, 1);
    return rec(m-1, rec(m, n-1));
}
1
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
15.12.2010, 18:56  [ТС] #3
А не могли бы вы немного поподробнее написать куда переносить аргументы просто мы никогда такого не проходили и сложно что-то сделать.Заранее большое спасибо

Добавлено через 18 секунд
valeriikozlov, А не могли бы вы немного поподробнее написать куда переносить аргументы
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 19:03 #4
Цитата Сообщение от juli.ya92 Посмотреть сообщение
А не могли бы вы немного поподробнее написать куда переносить аргументы
Вы наверное это имеете ввиду:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <malloc.h>
int rec(int m, int n)
{
    if(m==0)
        return n+1;
    if(n==0)
        return rec(m-1, 1);
    return rec(m-1, rec(m, n-1));
}
 
 
int main() {
    printf("%d", rec(3,5));
   return 0;
Эта программа вычисляет значения функции Аккермана при m равном 3 и n равном 5
1
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
15.12.2010, 19:09  [ТС] #5
valeriikozlov, Непонятно откуда ввод и вывод производится
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 19:15 #6
Цитата Сообщение от juli.ya92 Посмотреть сообщение
Непонятно откуда ввод и вывод производится
Если с вводом значений, то так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <malloc.h>
int rec(int m, int n)
{
        if(m==0)
                return n+1;
        if(n==0)
                return rec(m-1, 1);
        return rec(m-1, rec(m, n-1));
}
 
 
int main() {
    int m, n;
    printf("m= ");
    scanf("%d", &m);
    printf("n= ");
    scanf("%d", &n);
    printf("%d", rec(m,n));
   return 0;
}
Но это уже будет не просто
Разработать рекурсивную функцию
2
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
15.12.2010, 19:30  [ТС] #7
valeriikozlov, А у вас это программа работает?Просто у меня нет.

Добавлено через 3 минуты
valeriikozlov, Просто если вводишь допустим 5 и 6 не работает почему-то(
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 19:32 #8
juli.ya92, Я ждал этого вопроса. Вы наверное вводите например: m=4 и n=4. А сами не знаете что количество атомов в наблюдаемой части Вселенной просто не хватает для ответа.
Почитайте:
http://ru.wikipedia.org/wiki/Функция_Аккермана
1
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
15.12.2010, 19:45  [ТС] #9
valeriikozlov,Так а какие-то ограничения есть?))))Просто когда вводишь нек значения оно просто C++компилятор виснет и всё...
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 19:51 #10
В данном случае результат не должен превышать 2147483647
1
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
15.12.2010, 19:53  [ТС] #11
valeriikozlov, Так а я посмотрела там просто бесконечный цикл в отладчике получается...
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 19:57 #12
juli.ya92, Ну я же Вам ссылку показывал. Введите например:
m=3 n=5
m=3 n=6
m=2 n=5
1
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
15.12.2010, 20:00  [ТС] #13
valeriikozlov, Так а через отладчик там просто бесконечный цикл оно увеличивает и уменьшает значения...

Добавлено через 1 минуту
valeriikozlov, Программа работает и все эти примеры что вы написали тоже так а как преподавателю объяснить почему программа не работает если он введёт не то значение?)
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 20:01 #14
Цитата Сообщение от juli.ya92 Посмотреть сообщение
Так а через отладчик там просто бесконечный цикл оно увеличивает и уменьшает значения...
А что Вы хотели?

Добавлено через 59 секунд
Цитата Сообщение от juli.ya92 Посмотреть сообщение
а как преподавателю объяснить почему программа не работает если он введёт не то значение?)
Дайте ему ту же ссылку. Но я уверен, что преподаватель об этом давно знает.
1
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
15.12.2010, 20:02  [ТС] #15
valeriikozlov, Спасибо Вам огромное)!!!
0
15.12.2010, 20:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2010, 20:02
Привет! Вот еще темы с ответами:

Разработать рекурсивную функцию для вывода на экран стихотворения - C++
Разработать рекурсивную функцию, не возвращающую значений:Разработать рекурсивную функцию для вывода на экран стихотворения: 10 лунатиков...

Разработать рекурсивную функцию нахождения минимального элемента данной последовательности а1, а2, … - C++
Разработать рекурсивную функцию нахождения минимального элемента данной последовательности а1, а2, …, аn.

дана программа на рекурсивную функцию надо разработать как рисунке - C++
выкладываю рисунок и программу с заданием.надо также нарисовать чертеж ..:)думаю вы меня поняли))) разработать рекурсивную функцию...

Разработать рекурсивную функцию, определяющую, является ли заданная строка палиндромом - C++
Разработать рекурсивную функцию, возвращающую значение: Определяющую, является ли заданная строка палиндромом.


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

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

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