- 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 вообще равен? Объясните весь код, пожалуйста. Запутался уже.
3 Answers
- 1
Если вызвать с двумя параметрами - y вместо двойки (значение по умолчанию) принимает значение фактического параметра при вызове, например, во втором вызове это 4. Если с одним - второй всё равно есть, но равен значению по умолчанию, т.е. 2. P.S. Пишите по-английски, скоро ветки на других языках будут очень быстро минусоваться и удаляться.
- 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 но х то у нас не обозначен никак! Или обозначен? Не понял вообще этот момент.
- 1
x передаётся при вызове. При первом это 6, при втором 3. Соответственно, y раз единица домножается на 6 (получается 6 в степени y, а поскольку y не передавалось - 6 в квадрате), при втором вызове - единица 4 раза домножается на 3, и получается 3 в четвертой степени.