本帖最后由 wanghan519 于 2023-9-11 06:21 编辑
又试了一下,5楼因为递归次数较多就很慢,动态规划是算法上空间换时间的优化,确实快!
试了栈改成字符串操作并不改变速度,倒是因为把递归里的一层for循环展开导致递归次数变多,浪费的时间更多,结合官方文档说调用函数的成本高昂,调用函数是直接for循环耗时的20倍以上,所以暂时结论是powershell不适合写递归。。。
5楼的算法,用awk运行需要4秒(0-9选6个以内),而python里用itertools.product(s, repeat=n)只需要1秒多。。。- function combr(n, s, i) {
- if (length(s)==n) {
- print s
- return
- }
- for (i=1;i<=length($0);i++) {
- s = s substr($0, i, 1)
- combr(n, s)
- s = substr(s, 1, length(s) - 1)
- }
- }
复制代码
|