Просмотр полной версии : Не вычисляет факториал числа
muhactive
07.04.2008, 21:01
Функция должна вычислять факториал числа но в ответ выдаёт undefined
Number.prototype.factorial=function () {
if(isNan(this)==false && isInfinity(this)==false && this>=0 && this-Math.round(this)==0) {
var factor=1;
for (var i=1; i<=this; i++) {
factor*=i;
}
return factor;
}
else {
return Nan;
}
}
var a=5;
trace (Number.prototype.factorial(a)); //Может сдесь ошибка????
Буду благодарен! Заранее спасибо!:rolleyes:
Number.prototype.factorial = function() {
if (isNaN(this) == false && this>=0 && this-Math.round(this) == 0) {
trace("");
var factor = 1;
for (var i = 1; i<=this; i++) {
factor *= i;
}
return factor;
} else {
return Nan;
}
};
var a = 3;
trace(a.factorial());
попробуй так
function factorial (a:Number):Number {
if (a >= 0 && a < Number.MAX_VALUE && a != Number.MIN_VALUE && !isNaN (a)) {
var factor:Number = 1;
for (var i:Number = 1; i <= Math.round (a); i++) {
factor *= i;
}
return factor;
} else {
return Number.NaN;
}
}
var a = 5;
trace (factorial (a));
trace (factorial (Number.NaN));
trace (factorial (Number.MIN_VALUE));
trace (factorial (Number.MAX_VALUE));
trace (factorial (Number.NEGATIVE_INFINITY));
trace (factorial (Number.POSITIVE_INFINITY));
muhactive
07.04.2008, 21:43
Спасибо оба ваших кода верны!!!
Вот мой ещё!
Number.prototype.factorial=function () {
if(isNaN(this)==false && isFinite (this)==true && this>=0 && this-Math.round(this)==0) {
var factor=1;
for (var i=1; i<=this; i++) {
factor*=i;
}
return factor;
}
else {
return Nan;
}
};
var a=5;
trace (a.factorial());
Нет, верный код только мой :D
А ваши Number.prototype.factorial это безобразие. Вам в голову не приходило, почему у Number нет ни одного метода?
Mr. Fixit
07.04.2008, 22:10
iNils
через while будет куда быстрее :D
var i : int = 0;
while(++i <= value) {
factor *= i;
}
muhactive
08.04.2008, 01:54
Я и не спорю Ваш код куда лучше ;) Я просто не опытен, только недавно начал разбираться с АС2 и думаю что с моим жиланием и Вашим ЗАМЕЧАТЕЛЬНЫМ форумом у меня всё выйдет
iNils
через while будет куда быстрее :D
Mr. Fixit, вообще-то тут раздел AS1/AS2, если что.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.