Лучший способ справиться с этим - составить каждый логический блок как раздел и создать диаграмму состояний для всей функции.
Не забывайте, что падение после начала состояния считаетсяпереход и должны рассматриваться как таковые.Когда вы разбили их на переходы состояний, вы можете начать видеть, где они могут быть сведены к нескольким функциям, при необходимости применяя рекурсию или итерацию.
Теперь я полностью признаю, что непонять функцию или то, что она делает или должна делать, но это была первая попытка составить диаграмму состояний, чтобы дать вам представление о том, что я имею в виду.Обратите внимание на цикл на 80
, вероятно, понадобится цикл.Обратите внимание, что 10 и 100 - ваши единственные возвращаемые состояния.Обратите внимание на то, что когда вы идете от 30 до 50, пути назад уже нет.Это указывает на то, что 50+ может быть его собственной изолированной функцией, в то время как 10-40 - это ее собственная функция с циклом, который при достижении 30 говорит: return functionRepresenting50Pluss(...)
http://i51.tinypic.com/otkbqr.png
Простопримечание: заполненные квадраты на некоторых переходах состояния указывают, что этот переход гарантированно будет выбран, если никакой другой переход не сделан из состояния.Обратите внимание, что его нет на 80, потому что я не мог решить, 80 или 90, это гарантированный пункт назначения.Может быть, что-то может зацикливаться на 80?Без понимания функции я больше не могу сказать.