kostyanet,
где-то на форуме делал по иному но суть таже
<script>
function foo(a) {
var b = Array(a + 1).join("1").split("").map(function(b, a) {
return a + 1
}),
b = b.concat(b.slice(1, a - 1).reverse());
return function() {
var a = b.shift();
b.push(a);
return a
}
};
var x = foo(5)
for (var i=0; i<50; i++) {document.write(x()+ ' ')}
</script>