Есть задание. Даны два целых числа A и В. Выведите все числа от A до B включительно, в порядке возрастания через запятую, если A < B, но если A > B тогда выводить в порядке убывания через запятую.

Мой Код,
&НаКлиенте
Процедура ВыводЗначения(Команда)

 Если Число1 > Число2 Тогда
 Результат = Пересчет(Число1,Число2);
 ИначеЕсли Число1 < Число2 Тогда
 Результат = Пересчет2(Число1,Число2);
 КонецЕсли;
    Сообщить(Результат);
КонецПроцедуры

&НаКлиенте
Функция Пересчет(Число1,Число2);

 Если Число1 = Число2 Тогда
  Результат =Строка(Число1);
 Иначе
  Результат = Строка(Число1) + " " + Строка(Пересчет(Число1 - 1, Число2));
 КонецЕсли;
 Возврат Результат;

КонецФункции

  &НаКлиенте
Функция Пересчет2(Число1, Число2);

 Если Число2 = Число1 Тогда
  Результат =Строка(Число2);
 Иначе
  Результат = Строка(Число2) + " " + Строка(Пересчет2(Число1, Число2 + 1));
 КонецЕсли;
 Возврат Результат;

КонецФункции

Я не понимаю почему клиент вылетает, подскажите что не так
---
а зачем такой сложный код? на франчайзи учитесь?
попробуйте такой код

```1c
    Число1 = 10;
    Число2 = 17;
    лкМ = Новый Массив;
    Пока Число1 <> Число2 Цикл
    лкМ.Добавить(Число1);
    Число1 = Число1 + ?(Число1 < Число2, 1, -1);
    КонецЦикла;
    лкМ.Добавить(Число1);
    Сообщить(СтрСоединить(лкМ,","));
```
---
а зачем такой сложный код? на франчайзи учитесь?
попробуйте такой код

```1c
    Число1 = 10;
    Число2 = 17;
    лкМ = Новый Массив;
    Пока Число1 <> Число2 Цикл
    лкМ.Добавить(Число1);
    Число1 = Число1 + ?(Число1 < Число2, 1, -1);
    КонецЦикла;
    лкМ.Добавить(Число1);
    Сообщить(СтрСоединить(лкМ,","));
```
---
просто в задаче было условие не использовать циклы, спасибо за ответ, я уже нашел решение
---
не использовать циклы
```1c
    Функция ВывестиСледующее(Х, А, Б)
    Если Мин(А,Б)+Х > Макс(А,Б) Тогда
    Возврат 0
    Иначе
    Сообщить( А + ?( А > Б, -Х, Х ) );
    ВывестиСледующее( Х + 1, А, Б )
    КонецЕсли
    КонецФункции

    //...
    ВывестиСледующее(0, 15, 10)
```
---
+
---
Чтеа все такие сложные...
```1c
    Для Х = 0 ПО Макс(А,Б) - Мин(А,Б) Цикл
    Сообщить( ?( А < Б, А + Х, А - Х ) );
    КонецЦикла;
```
---
нужна одна сторока!
а сообщить в цикле что даст?
---
Ну а что мешает написать <<Возврат СтрШаблон("%1,%2", А +- Х, Следующее(Х+1, А, Б))>>?
---
"Не использовать циклы"
еще +/- запретили бы использовать

попробуйте рекурсивную процедуру
---
попробуйте рекурсивную процедуру
```1c
    Функция ВывестиСледующее(Х, А, Б)
    Если Мин(А,Б)+Х > Макс(А,Б) Тогда
    Возврат Строка(Макс(А,Б))
    Иначе
    Если А > Б Тогда
    Возврат ВывестиСледующее( Х + 1, А, Б ) +","+ Строка( А - Х ) ;
    Иначе
    Возврат Строка( А - Х ) +","+ ВывестиСледующее( Х + 1, А, Б );
    КонецЕсли;
    КонецЕсли
    КонецФункции

    //...
    Сообщить( ВывестиСледующее(0, 15, 10) )
```
---
получилось?
---
получилосьТак он же в (3) пишет, что нашел решение. А Вы что, правда помочь хотели? ))))
---
да какая это помощь? просто привести пример, рассмотреть разные варианты
(у вас тоже очень оригинальные)
вот что у меня с рекурсией получилось

```1c
    &НаКлиенте
    Процедура Команда1(Команда)

    Число1 = 3;
    Число2 = 10;
    Результат = ";
    ВыполнитьРасчет(Число1, Число2, Результат);
    Сообщить(Результат);

    КонецПроцедуры

    &НаКлиенте
    Процедура ВыполнитьРасчет(Число1, Число2, Результат)
    Результат = Результат + ?(Результат = ",",",") + Число1;
    Если Число1 <> Число2 Тогда
    Число1 = Число1 + ?(Число1 < Число2, 1, -1);
    ВыполнитьРасчет(Число1, Число2, Результат);
    КонецЕсли;
    КонецПроцедуры
```
---
привести пример, рассмотреть разные варианты+
```1c
    ВыполнитьРасчет(Число1 + (Число1 - Число2) / (Число1 - Число2), Число2, Результат);
```