これが私のコードです:
function sort(stack){
if(stack.length > 0){
var x = stack.pop();
sort(stack);
insert(x,stack);
}
}
function insert(x,stack){
if(stack.length>0){
var tops = topr(stack);
if(tops>x){
stack.pop();
insert(x,stack);
stack.push(tops);
}else{
stack.push(x);
}
}
}
function topr(stack){
var t = stack.pop();
stack.push(t);
return t;
}
var stack = [1,3,2];
sort(stack);
console.log(stack);
配列(再帰)を使用せずにこれを構築する必要がありました。ただし、コンソールにはvoid/aka何も返されません。
編集:完全に機能するソリューション:
function sort(stack) {
if(stack.length > 0) {
var x = stack.pop();
sort(stack);
insert(x,stack);
}
return stack;
}
function insert(x,stack){
if(stack.length>0){
var tops = topr(stack);
if(tops>x){
stack.pop();
insert(x,stack);
stack.push(tops);
}else{
stack.push(x);
}
}else{
stack.push(x);
}
}
function topr(stack){
var t = stack.pop();
stack.push(t);
return t;
}
var stack = [1,3,2];
stack = sort(stack);
console.log(stack);