Javascript-форум (https://javascript.ru/forum/)
-   Учебные материалы (https://javascript.ru/forum/study/)
-   -   [Учебник javascript]Одну из задач не могу понять (https://javascript.ru/forum/study/23461-%5Buchebnik-javascript%5Dodnu-iz-zadach-ne-mogu-ponyat.html)

MarkZ 24.11.2011 14:20

[Учебник javascript]Одну из задач не могу понять
 
Напишите функцию pow(x,n), которая возвращает x в степени n (для натуральных n). Иначе говоря, умножает x на себя n раз и возвращает результат.

pow(3, 2) = 3*3 = 9
pow(3, 3) = 3*3*3 = 27
pow(1, 100) = 1*1*...*1 = 1
Создайте страницу, которая запрашивает x и n, а затем выводит результат pow(x,n)

Вот что написано в решении:

<script>

function pow(x, n) {
var result = x

for(var i=1; i<n; i++) {
result *= x;
}

return result
}

var x = prompt("x?", '')
var n = prompt("n?", '')

alert( pow(x, n) )

</script>

мой маленький мозг не догоняет, что да как.
прошу объяснить;)

MarkZ 24.11.2011 15:12

и еще.
почему половина этой главы написана на англ.яз.
http://beta.javascript.ru/tutorial/exceptions

ksa 24.11.2011 15:38

Цитата:

Сообщение от MarkZ
мой маленький мозг не догоняет, что да как.

Если уже такой пример непонятен, можно подумать о двух вариантах:
1. Бросить это дело
2. Записаться на операцию по увеличению мозга

Цитата:

Сообщение от MarkZ
почему половина этой главы написана на англ.яз.

Это непереводимый английский фольклёр... :D Т.ч. забей...

MarkZ 24.11.2011 20:00

ну, бросать я не буду.
операция дорогая;(
эх. придется дальше учить

ваый 24.11.2011 20:52

правильно, не бросай сразу.
for (var i = 1; i < n; i++) {
    result *= x;
}

Это значит простой цикл. Все что внутри будет повторяться пока i меньше n, и на каждом шаге идет увеличение i на один.

result *= x; Это тоже самое что и result = result * x;

Можно написать еще более прикольный вариант, посложнее:
function pow(x, n) {
    if (n == 1) return x;
    return x * pow(x, n - 1);
}

Aetae 24.11.2011 21:02

ваый, наркоман штоле?)

ваый 24.11.2011 21:04

Цитата:

Сообщение от Aetae
ваый, наркоман штоле?)

ну иногда )))
на самом деле, написал эту хрень, и тоже подумал, что что-то я переработался сегодня..

ksa 24.11.2011 21:25

Повеселили... :D

nerv_ 02.12.2011 13:45

MarkZ, могу посоветовать выучить другой язык программирования)
В js я тоже новичок : ) Но попробую растолковать. Если где-то не прав, думаю, меня поправят:

// Определение ф-ции, и кол-во переменных, кот. она будет обрабатывать. Хотя, последнее спорно)
function pow(x, n) {
	// Объявить переменную с областью видимости внутри функции, присвоить ей значение x
	var result = x;
	// Цикл (выполняется, пока условие истинно): 
	//		1. объявляем переменную i, присваиваем ей значение 1
	//		2. собственно, само условие, кот. проверяется на каждом проходе цикла
	//		3. инкремент, опять-таки каждую итерацию
	for(var i=1; i<n; i++) {
		// присвоение с умножением, все равно, что result = result * x
		result *= x;
	}
	// значение, кот. возвращает функция
	return result;
}


Часовой пояс GMT +3, время: 10:24.