8.3 Возврат из значения рекурсивной функции #765792


#0 by breezee
Убираю последние точки, код ниже. При выполнении функции у меня поле всех вызовов не возвращает значение моей строки, а заново вызывается строка помеченная (***) и не возвращает ничего. Я сделал эту функцию по-другом, без рекурсии, но, если мне вдруг понадобится возвращать значения в рекурсивной функции - мне это может понадобится. Подскажите, пожалуйста, где я не правильно организовал рекурсию? стр1 = "";
#1 by эксвилл
Что вернет твоя функция, если на входе будет строка без точек?
#2 by pessok
лучше бы сделать это процедурой, без переменной НоваяСтрока Процедура УбратьПоследниеТочки(Стр)
#3 by breezee
Не отработал это, извиняюсь. Все равно пример тестовый Мне в конкретной задаче нужно было возвращать значение. Для всех строк колонки из экселя я получаю строки, потом обрезаю все последние точки и записываю обратно в эксель
#4 by sonne666
вместо НоваяСтрока используй Стр, или переопределяй НоваяСтрока = Стр. Сейчас функция вернет пустую строку, если в переданной строке нет последней точки.
#5 by Mort
К рекурсии нужно относиться как к неизбежному злу. А эта задача запросто решается одним циклом.
#6 by Рэйв
#7 by Лефмихалыч
everybody stand back! Функция УдалитьТочкиВКонце(Строка)
#8 by ObjectRelationModel
Функция УбратьПоследниеТочки(Знач Стр)
#9 by Лефмихалыч
только там ".$", а не ".+$" Это важно. При копипасте потерялось.
#10 by Mort
Добро пожаловать в унылый мир кроссплатформенных приложений.
#11 by Лодырь
будь в тренде ) открой для себя СтрЗаканчиваетсяНа(<Строка>, <СтрокаПоиска>)
#12 by pessok
воу. надо иногда читать не только про баги в новых версиях платформы
#13 by Лефмихалыч
+ Функция УдалитьТочкиВКонцеТупоЦиклом(Знач Строка) это чит для слабаков
#14 by фобка
бесконечный цикл
#15 by Лефмихалыч
В рекурсивной Сред на Лев можно заменить, короче получится на три символа
#16 by Лодырь
А если перейти на английское написание функций, то будет еще короче?
#17 by pessok
ну дат, там у него должно быть СтрДлина(Стр)-1
#18 by Лодырь
таки да. -1. не суть важно ) Но вы задумайтесь, даст ли плюс переход на английский язык. И удаление переносов строк. Меньше текста - меньше вес конфы, улучшается быстродействие )
#19 by фобка
по-моему вес конфы увеличивается блоками.. Там не прямая зависимость от количества символов. Создай внешнюю обработку с процедурой, сохрани, посмотри размер. Добавь в обработку комментарий, сохрани, сравни
#20 by фобка
Тем более код компилируется, поэтому язык не влияет на скорость. Только читаемость
#21 by Ildarovich
Это задача вообще одним выражением решается. Если в строке нет пробелов, то Если в строке есть пробелы, то понадобится еще две СтрЗаменить.
#22 by Mr_Rm
RE.Pattern = ".+$"; иначе обнулит всю строку.
#23 by ЧеловекДуши
В функции ошибка. Если в конце нет точки, совсем нет, то вообще вернет Пустоту.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С