Предположим, что f * h есть O (g * h). Тогда существуют такие x0, c, что f (x) * h (x) = c * g (x) * h (x) для всех x> = x0. Поскольку h всегда положительно, h (x) положительно, и мы можем делить обе части неравенства без изменения знака. Это дает f (x) < = c * g (x). Следовательно, f * h в O (g * h) влечет f в O (g).
То, что мы только что доказали, является правдоподобным. Ваше требование доказать следующее:
, если f не O (g), то f * h не O (g * h)
blockquote>показано:
, если f * h равно O (g * h), то f равно O (g)
blockquote>Поскольку все логические утверждения логически эквивалентны их В противоположность этому, ваше утверждение также верно. Вы можете рассуждать напрямую, умножая одну сторону неравенства на единицу h (x) / h (x), а затем умножая на h (x); но я думал, что отмена делением была более ясной.
Методы Objective C разработаны, чтобы быть сам документирование, и они одалживают у богатой традиции Smalltalk.
Я попытаюсь объяснить, что Вы имеете здесь, -(NSInteger) pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component
.
- (NSInteger)
Эта первая часть указывает, что это - метод экземпляра Objective C, который возвращает объект NSInteger. -
(тире) указывает, что это - метод экземпляра, где a +
указал бы, что это - метод класса. Первое значение в круглой скобке является типом возврата метода.
pickerView:
Эта часть является частью названия сообщения. Полное название сообщения в этом случае pickerView:numberOfRowsInComponent:
. Время выполнения Objective C берет эту информацию о методе и отправляет ее на обозначенный получатель. В чистом C это было бы похоже
NSInteger pickerView(UIPickerView* pickerView, NSInteger component)
. Однако, так как это - Objective C, дополнительная информация упаковывается на название сообщения.
(UIPickerView*)pickerView
Эта часть является частью входа. Вход здесь имеет тип UIPickerView*
и имеет название локальной переменной pickerView.
numberOfRowsInComponent:
Эта часть является второй частью названия сообщения. Как Вы видите здесь, названия сообщения разделены, чтобы помочь указать на то, какая информация Вы являетесь передающими к получателю. Таким образом, если бы я должен был передать объект myObject с нечто переменных и панелью, то я ввел бы:
[myObject pickerView:foo numberOfRowsInComponent:bar];
в противоположность стилю C++:
myObject.pickerView(foo, bar);
.
(NSInteger)component
Это - последняя часть входа. вход здесь имеет тип NSInteger
и имеет название локальной переменной компонента.
В Objective C название метода состоит изо всех частей объявления, которые не являются аргументами и типами. Название этого метода поэтому было бы:
pickerView:numberOfRowsInComponent:
Метод был бы эквивалентен функции C-стиля, которая смотрела следующим образом:
править: (с благодарностью к Jarret Hardie):
NSInteger pickerViewNumberOfRowsInComponent(UIPickerView * pickerView, NSInteger component)
Добавляя к предыдущим ответам, я был бы, точно так же, как, чтобы сказать, что методы Objective C (или сообщения, если Вы предпочитаете) имеют внешние и внутренние названия параметра.
Так в этом случае:
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
numberOfRowsInComponent
внешнее имя, то, которое Вы использовали бы при вызове этого метода с внешней стороны.
И component
внутреннее название параметра, тот, который Вы используете для обращения к параметру изнутри метода.
Надежда, которая разрешает его немного.