Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[98.82.140.17] |
|
Страницы: (7) « Первая ... 5 6 [7] все ( Перейти к последнему сообщению ) |
Сообщ.
#91
,
|
|
|
Цитата Lucifer, 27.02.2006, 21:24:41, 1028652 Правила некоторых компаний запрещают использование вложенных циклов хм... есть массив (100,100)... будьте любезны, пример кода, тупо ищущего максимальное значение ТОЛЬКО по ячейкам, обе координаты которых кратны 3. (РАЗУМЕЕТСЯ, БЕЗ ВЛОЖЕННЫХ ЦИКЛОВ!) Цитата Lucifer, 27.02.2006, 21:24:41, 1028652 Отрывать лапы авторам таких функций будьте любезны, пример парсера БЕЗ РЕКУРСИИ, способного разобрать код, где вложенность достигает, к примеру, ста тысяч элементов. (пример конечно надуман, но исключительно ради наглядности. справка: рекурсию на 20 тысяч уровней вложенности я видел в реальном коде.) Цитата Lucifer, 27.02.2006, 21:24:41, 1028652 исключения, как ни странно, придуманы для ИСКЛЮЧИТЕЛЬНЫХ операций (конкретнее - обычно для обработки ошибок).Про исключения один я здесь слышал?! Повсеместное применения исключений просто ещё раз иллюстрирует мой пример, когда goto как таковой есть, но назван другим словом, просто "чтобы не было goto". Сама идея команды безусловного перехода в определённое (как-то помеченное) место кода всё равно остаётся. |
Сообщ.
#92
,
|
|
|
Цитата BlackSnake @ будьте любезны, пример кода, тупо ищущего максимальное значение ТОЛЬКО по ячейкам, обе координаты которых кратны 3. (РАЗУМЕЕТСЯ, БЕЗ ВЛОЖЕННЫХ ЦИКЛОВ!) На паскале (хотя, ИМХО, идиотизм это делать без вложенных циклов): const MaxN = 100; MaxM = 100; function max(a,b: integer): integer; begin if a>=b then max := a else max := b; end; var a: array[1..MaxN,1..MaxM] of integer; function maxa: integer; var i,j,r: integer; begin i := 3; j := 3; r := -MaxInt; while true do begin r := max(r,a[i,j]); inc(j,3); if j > MaxM then begin inc(i,3); j := 3; end; if i > MaxN then break; end; maxa := r; end; Цитата BlackSnake @ будьте любезны, пример парсера БЕЗ РЕКУРСИИ, способного разобрать код, где вложенность достигает, к примеру, ста тысяч элементов. (пример конечно надуман, но исключительно ради наглядности. справка: рекурсию на 20 тысяч уровней вложенности я видел в реальном коде.) Ну, допустим, рекурсию на столько (и даже больше, порядка 10^6) я тоже видел в реальном коде. Допустим, у нас есть грамматика следующего вида (задана БНФ): number ::== number|number digit digit ::== 0|1|2|3|4|5|6|7|8|9 expression ::== number|leftparen expression rightparen leftparen ::== ( rightparen ::== ) Где expression --- интересующее нас выражение. Теперь, возьмем выражение с требуемой вложенностью 10^5: ((((....(((123)))....)))). Я утверждаю, что для того, чтобы распарсить выражения, задаваемые такой грамматикой, рекурсия не нужна. (Хотя, опять же, ИМХО, бред не использовать goto в коде парсера; к тому же, парсеры обычно генерируются по грамматике, и их код не нужно отлаживать, поэтому там можно почти все, что угодно) |
Сообщ.
#93
,
|
|
|
Цитата Lucifer, 28.02.2006, 22:55:44, 1029801 Цитата BlackSnake @ 28.02.06, 10:03 А ошибка и есть исключительная ситуация Цитата Lucifer, 27.02.2006 21:24:41 исключения, как ни странно, придуманы для ИСКЛЮЧИТЕЛЬНЫХ операций (конкретнее - обычно для обработки ошибок).Про исключения один я здесь слышал?! Lucifer, мы про одно и то же говорим ... Цитата BlackSnake, 28.02.2006, 08:03:04, 1028882 исключения придуманы для ИСКЛЮЧИТЕЛЬНЫХ операций (конкретнее - обычно для обработки ошибок). |