- 2

Методы. Нифига не понял

static int Pow(int x, int y=2) { int result = 1; for (int i = 0; i < y; i++) { result *= x; } return result; } static void Main(string[] args) { Console.WriteLine(Pow(6)); Console.WriteLine(Pow(3, 4)); } Я так понимаю тут 6 во второй степент, а 3 в 4 степени. Но чему x вообще равен? Объясните весь код, пожалуйста. Запутался уже.

10th Jan 2018, 10:24 AM
Николай Чепкасов
Николай Чепкасов - avatar
3 Answers
- 1
Если вызвать с двумя параметрами - y вместо двойки (значение по умолчанию) принимает значение фактического параметра при вызове, например, во втором вызове это 4. Если с одним - второй всё равно есть, но равен значению по умолчанию, т.е. 2. P.S. Пишите по-английски, скоро ветки на других языках будут очень быстро минусоваться и удаляться.
10th Jan 2018, 10:28 AM
Petr Leliaev
Petr Leliaev - avatar
- 1
Особенно вот эту часть кода static int Pow(int x, int y=2) { int result = 1; for (int i = 0; i < y; i++) { result *= x; } Что тут происходит? Мы объявили метод Pow. К переменной x вообще ничего не присвоили? y сделали по умолчанию 2 (и что это дало???) Переменной result присвоили 1. Потом получается, что если i (0) меньше 2, то нужно увеличивать значение i на единицу. Выходит у нас i = 1??? Далее result *= x /* 1*=x но х то у нас не обозначен никак! Или обозначен? Не понял вообще этот момент.
10th Jan 2018, 10:34 AM
Николай Чепкасов
Николай Чепкасов - avatar
- 1
x передаётся при вызове. При первом это 6, при втором 3. Соответственно, y раз единица домножается на 6 (получается 6 в степени y, а поскольку y не передавалось - 6 в квадрате), при втором вызове - единица 4 раза домножается на 3, и получается 3 в четвертой степени.
10th Jan 2018, 10:38 AM
Petr Leliaev
Petr Leliaev - avatar