Error too many levels of recursion maple ошибка

Error, too many levels of recursion

Error, (in …) too many levels of recursion

Description

Examples

Description

The too many levels of recursion error occurs when a statement or routine calls itself too many times. For example, a procedure may split a problem, then call itself on a subproblem. Those calls may then split the subproblems still further, and so on. This may cause Maple to run out of memory (stack limit exceeded) or to exceed Maple’s internal limit for recursive calls.


Examples


f ≔ n→n⋅fn−1;

f:=n→n⁢f⁡n−1

(2.1)

f(3);

Error, (in f) too many levels of recursion

Solution 1: Set a base case.


f(0):=1;

f⁡0:=1

(2.2)

f(3);

6

(2.3)

Solution 2: The base case is given within the procedure definition. Here, procname is used to implement the recursive call.


g ≔ procn if n = 0 then return 1;else return n*procnamen−1; end if; end proc;

g:=procnifn=0thenreturn1elsereturnn*procname⁡n − 1end ifend proc

(2.4)

g(5);

120

(2.5)

See Also

procedure

procname

I’m trying to plot the graph of a recursive function in Maple 17 but I keep getting the error Error, (in f) too many levels of recursion.

I need to plot a logarithmic graph in the range of x=1,…40.
Here is the code:

with(plots); 
f:=x->(2.25*f(x-1)-0.5*f(x-2));
f(1):=1/3;
f(2):=1/12;
logplot(f(x),1..40);

How can I fix this problem? Maybe I need to write it in an iterative form, but I don’t know how.
Thank you very much for any help!

asked Jul 23, 2014 at 20:18

Johe's user avatar

Considering your comment, if you do the following, then you will get a graph very close to the one you got in Matlab.

Digits:= 15:

f:= proc(n)
option remember;
     if not n::posint then 'procname'(args)
     else 2.25*thisproc(n-1) - 0.5*thisproc(n-2)
     end if
end proc:
f(1):= 1/3:  f(2):= 1/12:

f_exact:= proc(n)
option remember;
     if not n::posint then 'procname'(args)
     else 9/4*thisproc(n-1) - 1/2*thisproc(n-2)
     end if
end proc:
f_exact(1):= 1/3:  f_exact(2):= 1/12:

plots:-logplot([
      [seq([x, abs(f(x))], x= 1..40)], 
      [seq([x,f_exact(x)], x= 1..40)]
]);

The plot

answered Jul 24, 2014 at 19:49

Carl Love's user avatar

Carl LoveCarl Love

1,4618 silver badges7 bronze badges

0

Your function is extremely sensitive to floating-point errors. You must use exact arithmetic in computing the values of f. If you don’t, then you’ll get negative function values, and then using logarithms won’t make sense.

Also, your function is only defined for integer values of n. You have to somehow inform the plot command of that.

f:= proc(n)
option remember;
     if not n::posint then 'procname'(args)
     else 9/4*thisproc(n-1) - 1/2*thisproc(n-2)
     end if
end proc:
f(1):= 1/3:  f(2):= 1/12:
plot([seq([x,log10(f(x))], x= 1..40)]);

enter image description here

answered Jul 24, 2014 at 0:36

Carl Love's user avatar

Carl LoveCarl Love

1,4618 silver badges7 bronze badges

3

  • Темы
    • Изображения и видео
    • Цифровая обработка сигналов
    • Верификация и валидация
    • Математика и статистика
    • Биология
    • Системы связи
    • Встраиваемые системы
    • Глубокое и машинное обучение(ИИ)
    • Автоматизация испытаний
    • Робототехника и беспилотники
    • ПЛИС и СнК
    • Радиолокация
    • Системы управления
    • Финансы
    • Электропривод и силовая электроника
    • Другое

    Настроить подписки по умолчанию можно

    профиле

    .

  • Сортировка
    • По дате публикации
    • По кол. комм/отв
    • По рейтингу
    • По просмотрам
  • Тип
    • Публикации
    • Вопросы
  • вопрос
  • 02.06.2023

FxGreamer

Работа со строковыми данными в таблице

В таблице , в одном из столбцев есть нужная переменная, как достать все данные об этой строке отталикиваясь только от этой переменной?

В таблице , в одном из столбцев есть нужная переменная, как достать все данные об этой строке отталикиваясь только от этой переменной?

  • вопрос
  • 31.05.2023

FxGreamer

Работа со строковыми данными в таблице

Добрый день, нужна помощь в работе с таблицей. У меня есть определенный коэф. Kg=2.53, в таблице идет столбец значений Kg, как осуществить поиск и выбор нужного значения, между теми, что идут в таблиц…

Добрый день, нужна помощь в работе с таблицей. У меня есть определенный коэф. Kg=2.53, в таблице идет столбец значений Kg, как осуществить поиск и выбор нужного значения, между теми, что идут в таблиц…

  • вопрос
  • 28.05.2023

Forlock

Преобразование Фурье

Здравствуйте, помогите пожалуйста разобраться с преобразованием Фурье. Желательно с объяснением решения (см. вложенный скрин). Заранее всем спасибо!

Здравствуйте, помогите пожалуйста разобраться с преобразованием Фурье. Желательно с объяснением решения (см. вложенный скрин). Заранее всем спасибо!

  • вопрос
  • 26.05.2023

altasose

Облачные вычисления в MatLab

Возможны ли облачные вычисления в среде MatLab, без установки приложения на собственный компьютер? Если » да», то как это сделать?

Возможны ли облачные вычисления в среде MatLab, без установки приложения на собственный компьютер? Если » да», то как это сделать?

  • вопрос
  • 20.05.2023

Рамзес

Смодилровать устройство электромеханического типа в программе Симулинк

Нужно смоделировать устройство (Блок схемы уже есть) которые изготавливают упругие элементы из проволоки для амортизаторов бортовой радиоэлектронной аппаратуры. Там есть обратная связь ( в виде датчик…

Нужно смоделировать устройство (Блок схемы уже есть) которые изготавливают упругие элементы из проволоки для амортизаторов бортовой радиоэлектронной аппаратуры. Там есть обратная связь ( в виде датчик…

  • вопрос
  • 20.05.2023

snk

Структурная схема блока Synchronous Machine Round Rotor.

Добрый день! Мне нужна структурная схема (и может быть ее описание) блока Synchronous Machine Round Rotor. Помогите пожалуйста найти источник информации.

Добрый день! Мне нужна структурная схема (и может быть ее описание) блока Synchronous Machine Round Rotor. Помогите пожалуйста найти источник информации.

  • вопрос
  • 14.05.2023

ms_L_F

Моделирование искажений изображения

Необходимо было моделировать возможные искажения изображения, проблемы возникли в моделировании процесса преломления света при прохождении через сферическую поверхность, полученное изображение было в…

Необходимо было моделировать возможные искажения изображения, проблемы возникли в моделировании процесса преломления света при прохождении через сферическую поверхность, полученное изображение было в…

  • вопрос
  • 02.05.2023

Drizaya

Интегральная чатотно импульсная модуляция

Мне нужно сделать интегральную частотно-импульсную систему автоматического управления теплопотреблением помещения. Я никак не могу разобраться как сделать регулятор ичим

Мне нужно сделать интегральную частотно-импульсную систему автоматического управления теплопотреблением помещения. Я никак не могу разобраться как сделать регулятор ичим

The error message «too many levels of recursion» is sometimes misleading. In the problem below, the error source was an undefined list variable.

This hint may help to find programming errors.


> restart;
> #===============================
> EE := proc(n1,n2)
> #===============================
> global N;
> # create list of nodes N
> if not has(N,n1) then
> N:=[op(N),n1];
> end if;
> if not has(N,n2) then
> N:=[op(N),n2];
> end if;
> end proc:
> #===============================
> EE(a,b); #N is undefined->recursion error?
> N:=[];
> EE(a,b); #N is defined empty->no error
Error, (in EE) too many levels of recursion
N := [ ]
[a, b]

Tags are words are used to describe and categorize your content. Combine multiple words with dashes(-), and seperate tags with spaces.

You have too much recursion because your code assumes nto be even for the stopping criterion to work. If you call your flops count function with nequal to 3, it will call the function with argument 3/2and your recursion will never end. You could replace your function with

flops(n) := (89+1/3)*n^3 + 2 * flops(floor(n/2))

and use the criterion flops(0) := 0

But this will only work if you use numbers, not some arbitrary N. If you want to solve the recurrence equation, you should use the rsolvecommand:

rsolve({flops(n) = (89+1/3)*n^3 + 2 * flops(n/2),flops(1)=0},flops(n));

which will give you $frac{1072}{9}n(n^2-1)$ as an answer to your problem.

Понравилась статья? Поделить с друзьями:
  • Error src refspec main does not match any ошибка
  • Error socket hang up postman ошибка
  • Error s not enough storage space 1011 ошибка
  • Error running lua method update fs19 как исправить ошибку
  • Error report как исправить эту ошибку