Формула для вычисления суммы узлов подробно L: (Учитывая, что существуют корневые узлы N)
Н <глоток> L глоток>
Для вычисления количества всех узлов, нужно сделать это для каждого слоя:
for depth in (1..L)
nodeCount += N ** depth
, Если существует только 1 корневой узел, вычтите 1 из L и добавьте 1 к общему количеству узлов.
знать, что, если в одном узле сумма листов отличается от среднего случая, это может оказать большое влияние на Ваше число. Чем далее в дереве, тем больше влияния.
* * * N ** 1 *** *** *** N ** 2 *** *** *** *** *** *** *** *** *** N ** 3
Это - общественная Wiki, поэтому не стесняйтесь изменять мою ужасную алгебру.
С точки зрения программистов, решение PageControl быстро выходит из-под контроля. Возможно, слишком много кода и, конечно, для множества компонентов в одной форме. (Первоначально этот вопрос был помечен как Delphi, поэтому я перейду к нему.)
С точки зрения пользователей парадигма «открывает новое окно» часто сбивает с толку. Мы, люди, склонны думать, что можем выполнять несколько задач одновременно и обрабатывать множество открытых окон и задач, но это не так (мы переключаем задачи с потерей времени, как компьютеры, и добавляем потерю точности).
Очевидно, это действительно зависит от Тип заявления. Но я бы предпочел парадигму, как показывают Chrome и Firefox в их последних воплощениях:
я реализую что-то вроде SDI в качестве главного экрана приложения. Посмотрите на что-то вроде «стиля мировоззрения». Навигация, список объектов, детали объекта в разных панелях, некоторые дополнительные панели, такие как кабина. А затем откройте новое окно / форму для определенных задач (некоторые модальные, некоторые немодальные), но недолговечные. После того, как письмо написано, оно отправляется и закрывает окно. Но у меня есть, если я способен, возможность работать с несколькими электронными письмами одновременно.
Посмотрите на проблему. Если он имеет характер приборной панели, возьмите «стиль внешнего вида» или около того. Если пользователи являются широко распространенной, разнородной, не разбирающейся в компьютерах толпой, используйте SDI или формы на вкладках. Если вы пишете для программистов, вы можете использовать несколько форм только потому, что мы склонны думать, что можем справиться с этим. И это работает для нескольких экранов (надеюсь).
На мой взгляд, MDI - наихудший вариант. Нет ничего, что я ненавижу больше, чем необходимость изменять размер кучи окон, или мозаику их, или что-то еще.
Вкладки тоже плохи, особенно если у вас их несколько строк (или если у вас одна строка, но их больше вкладок, чем уместятся, и придется использовать с ними какую-то забавную полосу прокрутки или кнопку "еще").
Я бы предпочел, чтобы программист думал о проблеме и просто показал мне, что мне нужно увидеть, основываясь на том, что я делаю как пользователь. Реализация различных пользовательских интерфейсов в ваших программах в виде пользовательских элементов управления (в отличие от дискретных форм) с последующим их отображением или скрытием в зависимости от текущего контекста - это лучший способ.