我倾向于说“递归”,但你已经提到了,所以它不可能那么容易。。。 *叹息*。。。别逼我打你!
这是一个使用____进程的递归过程。
*PSSST提示:*去把我给你的替代模型写下来。 这是Duff Kirkland的一个非常古老的例程(修改为接受所有文件类型扩展名)-David
DDTYPE。DCL
DDTYPE。LSP
哈哈,你可以试试,但你可能会弄坏你的显示器。。。
这是一个使用迭代过程的递归过程。
我确实需要快速查看一下。。。 线性的
确定它是线性的还是迭代的一个技巧是检查在过程调用自身后是否有一个过程尚未完成。
...
(cons
;; construct a list
s
(pars (read-line f) f))
;; call itself
...
CONS(列表)必须在调用自身后进行求值,因此它是线性的(请记住:Lisp是由内而外求值的)。
子模型:
(做点什么)
(做某事)
(做点什么(做点什么(做点什么)))
(做某事(做某事(做某事(做某事)))
...
(做某事)
(做点什么)
当你看到这一点时,你应该想:“如果有很多信息需要处理,那么堆栈上可能有很多数据,所以我必须小心使用。”
使用迭代过程的递归过程有时称为“尾部递归”过程。尾部递归过程有点混乱(我自己也有问题),但您看到的99%的递归AutoLisp过程将使用线性过程。使用迭代过程子模型的递归过程如下所示:
(做点什么)
(做点什么)
(做点什么)
(做点什么)
...
(做点什么)
不管怎样,你看起来真是太棒了。我自己也经常提到它,但如果你也能找到一些用处,我会很高兴的。 谢谢你的信息,我确实想了解这些事情-但有时很难一步一步地想象。
从你的解释来看,我认为我实际上没有看到迭代过程(尾部递归)。。。但我看到了很多线性的。。。
例如,我经常使用这个(源自Gile me thinks…)
然而,我确实有一个问题:什么决定了“堆栈”?这是计算机上RAM的数量吗?还是与其他事情有关?还是我在这件事上偏离了目标。。。 据我所知(我看到了相互矛盾的定义),这是Windows操作系统在启动时分配给AutoCAD程序的内存量(RAM)(但我不确定……我只是认为它是一个内存黑盒)。如果你找到一个好的def,请把它传下去。
当然有。我在那篇文章中举了一个例子。
4
天哪,这是一个很难弄清楚的问题-我最好再看看那篇文章。。。 那么,澄清一下,我说这是线性的对吗?因为在“递归”之前没有对“cons”进行评估? 在DOS时代,您必须根据您的机器有多少RAM来控制堆栈和堆值。如今,Windows尽其所能地分配其-大卫
http://www.computing.net/answers/programming/waht-is-stack-amp-heap/6345.html
页:
1
[2]