0 / 0 / 1
Регистрация: 22.03.2016
Сообщений: 7
1

Рекурсия: вычисление функции Аккермана

03.06.2016, 15:25. Показов 3068. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу, реализующую составленный алгоритм на языке программирования Си, выделив вычисление по рекуррентной формуле в отдельную функцию.

Функция Аккермана A(m,n) определена следующим образом:

Рекурсия: вычисление функции Аккермана


Даны два целых неотрицательных числа m и n, каждое в отдельной строке. Выведите A(m,n).

Не могу понять, как реализовать данную задачу(
0
Лучшие ответы (1)
03.06.2016, 15:25
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.06.2016, 15:25
Ответы с готовыми решениями:

Рекурсия: вычисление количества сочетаний
Написать рекурсивную функцию вычисления количества сочетаний C (n , m) по формуле C (n , m) = C (n-1 , m-1) + C (n , m-1), зная, что C (m ,...

Рекурсия: вычисление функции Аккермана
Обчислити рекурсивним методом значення математичної залежності, заданої рекурентною формулою, для довільного значення параметрів. ...

Рекурсия: вычислить значение функции Аккермана
Даны неотрицательные целые числа n,m; используя рекурсивную подпрограмму, вычислить значение функции Аккермана A(n,m), где A(n,m)={m=1,...

2
0 / 0 / 1
Регистрация: 22.03.2016
Сообщений: 7
08.06.2016, 01:32  [ТС] 2
Вот решение. Значения n и m выбираются по таблице значений для данной функции.
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
#include <stdio.h> 
#include <locale.h> 
#include <conio.h>
#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 n, m;
    setlocale(LC_ALL, "rus");
    printf("Введите n и m: ");
    scanf("%d%d", &n, &m);
    printf("Функция Аккермана дл данных значений = %d", rec(m, n));
    getch();
    return 0;
 
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12837 / 7573 / 1765
Регистрация: 25.07.2009
Сообщений: 13,969
08.06.2016, 02:00 3
Лучший ответ Сообщение было отмечено OldBadger как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
unsigned akkerman(unsigned m, unsigned n) {
    return ( ! m ) ? n + 1 : ( ! n ) ? akkerman(m - 1, 1) : akkerman(m - 1, akkerman(m, n - 1));
}
 
int main(void) {
    unsigned m, n;
    
    while ( printf("Space separated m & n > ") && scanf("%u%u", &m, &n) == 2 )
        printf("Akkerman(m, n) = %u\n", akkerman(m, n));
    
    return 0;
}
0
08.06.2016, 02:00
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2016, 02:00
Помогаю со студенческими работами здесь

Вычисление функции Аккермана итерационно
Помогите пожалуйста написать программу для вычисления функции акермана, не рекурсивным путём. Прокопал интернет, ничего не нашёл. Сам...

Рекурсивное вычисление функции Аккермана
Помогите пожалуйста написать прогу... На языке программирования Pascal написать рекурсивную программу, вычисляющую значения функции...

Рекурсивное вычисление функции Аккермана
Составить программу вычисления значений функции Аккермана для неотрицательных чисел n и m, вводимых с клавиатуры. A(n,m) = совокупность...

Вычисление функции Аккермана. Код есть, но он не считает со значением 3 и выше
predicates ack(integer,integer,integer) clauses ack(0,N,Val):-Val=N+1. ack(M,0,Val):-M&gt;0,M1=M-1,ack(M1,1,Val). ...

Напишите программу, реализующую вычисление значения функции Аккермана (Visual Prolog)
Напишите программу, реализующую вычисление значения функции Аккермана: Функция Аккермана является функцией быстрого роста. Так,...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Комментарии в JSON
hw_wired 10.02.2025
JSON - текстовый формат обмена данными, построенный на основе синтаксиса JavaScript. Этот формат отличается простотой, читаемостью и широкой поддержкой во всех современных языках программирования. . . .
Перезаписываем локальные файлы с помощью git pull
hw_wired 10.02.2025
Git pull - незаменимая команда для синхронизации локального репозитория с удаленным. При работе над проектом в команде разработчиков часто возникает необходимость получить актуальные изменения,. . .
Оператор --> в C++
hw_wired 10.02.2025
Оператор --> (называемый "spaceship operator" или оператор космического корабля) - важное нововведение в стандарте C++20, упрощающее реализацию операций сравнения в пользовательских типах данных. . . .
Отмена git add до коммита
hw_wired 10.02.2025
Git предлагает несколько методов для отмены индексации файлов перед созданием коммита. Разработчики часто сталкиваются с ситуацией, когда нужно убрать файлы из индекса, не теряя внесенные изменения в. . .
Типы MIME в JSON: что и когда использовать в REST API
hw_wired 10.02.2025
MIME-типы играют ключевую роль в современных веб-приложениях, особенно в контексте REST API и микросервисной архитектуры. Они определяют формат передаваемых данных между клиентом и сервером, что. . .
Переименование локальной ветки Git
hw_wired 10.02.2025
Git предлагает систему управления версиями, где ветки играют ключевую роль в организации разработки. Ветки позволяют изолировать изменения кода, экспериментировать с новыми функциями и поддерживать. . .
Удаление элемента из массива в JavaScript
bytestream 10.02.2025
В JavaScript массивы - это упорядоченные наборы данных, которые часто требуют модификации, включая удаление элементов. Самый распространенный метод для этой задачи - splice(). Этот метод позволяет не. . .
Что значит yield в Python
bytestream 10.02.2025
Ключевое слово yield в Python создает генераторную функцию - особый тип функции, которая возвращает итератор. В отличие от обычных функций, использующих return для возврата значения и завершения. . .
Чем отличаются git pull и git fetch
bytestream 10.02.2025
Git предоставляет множество команд для работы с удаленными репозиториями, среди которых особое место занимают git fetch и git pull. Эти команды помогают синхронизировать локальный репозиторий с. . .
Как удалить ветку Git в локальном и удаленном репозитории
bytestream 10.02.2025
Git предлагает развитую систему ветвления, позволяющую разработчикам создавать параллельные версии кода для различных задач. Ветка в Git - это легковесный указатель на определенный коммит, который. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru