Правила формального синтаксиса команд Maple

Команды Maple для работы с процедурами, функциями и более сложными структурами

Версия для печати

Рекурсивные процедуры

Это процедуры, которые обращаются сами к себе, пока не выполнится условие.

(см. ?remember).

Задача 10.2. Числа Фибоначчи

Вычислить числа Фибоначчи и время расчета для:

F(n) = F(n – 1) + F(n – 2), F(0) = 0, F(1) = 1.

  • Fib:=proc(n::integer) option remember;
  • if n<=l then n else Fib(n-l)+Fib(n-2) end if; end proc;
  • NF:=NULL:
  • for i from 10 to 40 do NF:=NF,Fib(i); end do:
  • NF:=[NF];
  • ti:=time():
  • Fib(3000);
  • tt:=time()-ti;
  • op(4,eval(Fib));
  • forget(Fib);

Если включить опцию remember (см. ?remember), Maple создаст таблицу памяти, в которой будут храниться все вычисленные величины, и их не надо будет вычислять заново. Таблица памяти доступна как op(4,eval(Fib)), и с нею можно работать как с табличным объектом. Таким способом увеличивается эффективность вычислений, экономится время, но занимается память. Чтобы очистить таблицу памяти процедуры, можно использовать функции forget или restart.