爲了代碼的簡潔性,這裏不使用嚴格模式了
function rotateRect(index) { var arr = [], f = 0; for (var i = 0; i < index; ++i) { arr.push([]); arr[i].length = index; } return index & 1 ? (function (f, arr, index) { if (index <= f) return arr; for (var j = 0; j < index - f; j++) arr[index - 1][index - 1 - j] = (index - f) * (index - f) - j; for (var i = 0; i < index - f; i++) arr[index - 1 - i][f] = (index - f) * (index - f) - (index - f) + 1 - i; for (j = f; j < index; j++) arr[f][j] = (index - f) * (index - f) - ((index - f) - 1) * 2 - j + f; for (i = f; i < index - 1; i++) arr[i][index - 1] = (index - f) * (index - f) - ((index - f) - 1) * 3 - i + f; return arguments.callee(f + 1, arr, index - 1); })(f, arr, index) : (function (f, arr, index) { if (index <= f) return arr; for (var j = f; j < index; j++) arr[f][j] = (index - f) * (index - f) - j + f; for (var i = f; i < index; i++) arr[i][index - 1] = (index - f) * (index - f) - (index - f) + 1 - i + f; for (j = 0; j < index - f; j++) arr[index - 1][index - 1 - j] = (index - f) * (index - f) - ((index - f) - 1) * 2 - j; for (i = 0; i < index - 1 - f; i++) arr[index - 1 - i][f] = (index - f) * (index - f) - ((index - f) - 1) * 3 - i; return arguments.callee(f + 1, arr, index - 1); })(f, arr, index) }