我用C#编写了一个应用程序,它可以生成所有可以由字母、数字和一些特殊字符组合而成的单词。
问题是它的内存效率不高,因为它正在适应递归和一些像List这样的集合。
有没有办法让它在有限的内存环境中运行?
乌马尔
发布于 2010-07-29 06:17:46
将其转换为iterative function.
发布于 2010-07-29 07:52:23
不幸的是,C#编译器不执行tail call optimization,这是您希望在这种情况下发生的事情。CLR支持它,kinda,但你不应该依赖它。
也许在字段的左边,但也许你可以用F#编写程序的递归部分?这样,您就可以利用有保证的尾部调用优化,并重用C#代码的一小部分。虽然学习曲线很陡峭,但F#是一种更适合这些组合任务的语言。
发布于 2010-07-30 17:02:49
嗯……我不确定我和你们谁一起去,但我有解决办法。我使用了多个进程,一个是与用户交互的进程,另一个是查找单词组合的进程。另一个过程找到5000个单词,保存它们并退出。通信是通过WCF实现的。当进程退出=释放内存时,这看起来很好。
https://stackoverflow.com/questions/3358000
复制相似问题