- 论坛徽章:
- 5
|
闲的无聊:Lua版(注意用了两种不同的方法书写,一种是table数据结构,一种是用的不定长参数vararg):- print "table version"
- function perm(t, lvl)
- if #t == lvl then
- return print(table.concat(t, ", "))
- end
- lvl = lvl or 1
- for i = lvl, #t do local v = t[i]
- table.insert(t, lvl, table.remove(t, i))
- perm(t, lvl+1)
- table.insert(t, i, table.remove(t, lvl))
- end
- end
- perm {'A', 'B', 'C', 'D', 'E'}
- print "vararg version"
- local vararg = require 'vararg'
- local function nperm(n, ...)
- local argn = select('#', ...)
- if n == argn then
- return print(...)
- end
- for i = n, argn do
- local v = select(i, ...)
- nperm(n+1, vararg.insert(v, n, vararg.remove(i, ...)))
- end
- end
- function perm(...) return nperm(1, ...) end
- perm('A', 'B', 'C', 'D', 'E')
复制代码 |
|