//satck構(gòu)造函數(shù)
function Stack() {
this.items = [];
this.top = 0;
}
/*桟具有以下方法
push() 進(jìn)棧
pop() 退棧
size() 棧大小
empty() 判斷棧是否為空
peek() 返回棧頂元素
clear() 清空棧
*/
//給桟添加方法
Stack.prototype = {
constructor: Stack,
push: push,
pop: pop,
size: size,
empty: empty,
peek: peek,
clear: clear
}
function push() {
var item = [];
this.items[this.top++] = item;
}
function pop() {
if (this.top === 0) {
return;
} else {
var item = this.items[this.top - 1];
this.items.length = --this.top;
return item;
}
}
function size() {
return this.top
}
function empty() {
return this.top === 0;
}
function peek() {
return this.items[this.top - 1];
}
function clear() {
this.items = [];
this.top = 0;
}
//遞歸函數(shù)
function factorial(n) {
if (n === 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
factorial(5);
//桟的應(yīng)用:遞歸函數(shù)
/*function factorial(n) {
var s = new Stack(),
result = 1;
while (n > 1) {
s.push(n--);
}
while (s.size() > 0) {
result *= s.pop()
}
return result;
}*/