![]() |
#1 |
Гость
|
Рекурсия, память
Axapta 3.0 SP4
Хотелось посмотреть, как Аксапта будет реагировать на рекурсию: Код: int rn(int i) { int loop(int _i) { int j = _i+1; ; j = j>10?1:j; return j; } do { loop(i); } while (true); return i; } Реальной задачи на самом-то деле - нет, но есть интерес |
|
![]() |
#2 |
Программатор
|
KernelRollup (или как то так) какой?
|
|
![]() |
#3 |
Участник
|
А где, собственно, рекурсия?
Я вижу только странный бесконечный цикл |
|
![]() |
#4 |
Гость
|
![]()
с рекурсией будет ещё хуже - она у меня падает на 400-м шаге.
Последнее значение j до переполнения = 399 Ошибка времени выполнения. : Переполнение во внутреннем стеке исполнения кода. Код: int rn(int i) { int loop(int _i) { int j = _i+1; ; j = j>600?1:j; print j; if (j<500) loop(j); return j; } do { loop(i); } while (true); return i; } |
|
![]() |
#5 |
Участник
|
Только что проверил на АХ 2009. С первым заданием все ОК - утечек нет.
Второе вызывает переполнение внутреннего стека. Но, рекурсия глубиной 500 - маловероятно. Даже 399 - довольно много |
|
![]() |
#6 |
Гость
|
cудя по инфо с этой странички:
http://forum.mazzy.ru/index.php?showtopic=881 Axapta 3.0 EE SP4 FP1 1951.4060 514-320 SP4 OP023-196 я так понимаю, что никаких 'kernel rollup' не накачено? То есть ядро не патчилось? |
|
![]() |
#7 |
Гость
|
Цитата:
Код: int rn(int i) { int loop(int _i) { int j = _i+1; ; j = j>600?1:j; print j; if (j<300) loop(j); return j; } do { loop(i); } while (true); return i; } ![]() |
|
![]() |
#8 |
Участник
|
У меня и такой вариант нормально.
Скорее всего, дело действительно в необходимости накатить какие-то патчи на kernell |
|
![]() |
#9 |
Moderator
|
400 - это, вроде, стандартное ограничение на глубину вызовов методов и вложенных функций (прочитал в книге Еременко, Шашкова на стр.242)
|
|
![]() |
#10 |
Программатор
|
KR 2 поставить надо ИМХО. Там с утечкой памяти пофиксино чегото было.
|
|
|
За это сообщение автора поблагодарили: (1). |
![]() |
#11 |
Гость
|
спасибо за совет. окончательно расстроился на этом...
Код: do { } while (true) |
|