Re[3]: Язык программирования ПРОФТ
От: WolfHound  
Дата: 13.04.08 16:46
Оценка:
Здравствуйте, Федор Тюленев, Вы писали:

ФТ>В общем мне сказать больше нечего. Если будут конкретные вопросы выраженные без заиканий (уё..., го... и т.д.), то постараюсь на них ответить.

А что я делаю не так?
Пытался тут посчитать функцию Аккерманна (одна из первых функций которые я пробую написать на языке программирования)
Эта программа говорит 4. Хотя должна говорить 61.
Действие Начало(). 
    сбщ(Аккерманн(3, 3)). 
КонецДействия.

Действие Аккерманн(м; н). 
  Если м = 0.
    Аккерманн = н + 1.
  Иначе.
      Если н = 0.
        Аккерманн = Аккерманн(м - 1, 1).
      Иначе.
        Аккерманн = Аккерманн(м - 1, Аккерманн(м, н - 1)).
      КонецЕсли.
   КонецЕсли.
КонецДействия.


Аналог на немерле говорит правильно. Да еще и работает очень быстро.
using System.Windows.Forms;
using Nemerle;

module Program
{
    [Memoize]
    Ackermann(m : int, n : int) : int
    {
    | (0, _) => n + 1;
    | (_, 0) => Ackermann(m - 1, 1);
    | (_, _) => Ackermann(m - 1, Ackermann(m, n - 1));
    }
    Main() : void
    {
        _ = MessageBox.Show($"$(Ackermann(3, 12))");
    }
}
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.