list - (wx)Maxima:`makelist` 是并行工作还是串行工作?
问题描述
我有兴趣创建一个列表,其术语被递归定义(即term[i]
是 的函数term[i-1]
,而不是的函数i-1
)。
我认为如果makelist
连续工作,那么调用上一个术语应该不是问题;但是,文档没有明确说明这些术语是如何生成的。
初步尝试(注意:尽管此处的输出可以使用索引的函数来实现,但重点是创建一个简单的示例来测试在 内调用先前术语的能力makelist
):
test:
makelist(block([ ],
/* list item set to 1 for first term of the list, and to previous list item, thereafter */
if i = 1
then addend
else test[i-1]
)
, i, 5);
但这会返回[1, test[1], test[2], test[3], test[4] ]
,因此它似乎并没有真正访问test
.
我尝试了各种实验,包括初始化test
;包括在块中调用 test , ieblock([ test:test ], ...
和其他一些,但未能获得所需的结果。
解决方案
这是一个很好的问题。的结果makelist
与分配给它的变量无关(test
在上面的示例中),因此在makelist
构造其结果时,无法知道test[i - 1]
是否是前一项。我认为没有任何方法可以从内部访问前一个项目makelist
(例如,通过一些 Lisp 编程或其他方式)。
关于makelist
串行或并行,我 99% 确定元素是按顺序构造的。例如makelist(print(i), i, 1, 10)
打印从 1 到 10 的数字。
如果一个术语依赖于前一个术语,一种方法是创建一个空列表(例如x: makelist(0, n)
),然后循环遍历元素(例如x[1]: FOO; for i:2 thru n do x[i]: x[i - 1] + something
)。
推荐阅读
- python - git跟踪项目中vscode设置工作区python.pythonPath的处理
- html - 带有目标的 Boostrap 响应式列
- java - 在Java中生成一些范围内的许多随机数,但有一些例外
- allennlp - AllenNLP)有没有办法为评估设置配置,特别是为读者?
- upgrade - Ojdbc8 jars 升级到 21.1.0.0 抛出 Nosuchmethod 异常 UCPservletContextListener init
- django - context_object_name 在 CreateView (Django 2.2) 上不起作用
- api - VB.NET order binance 不断收到错误 400
- python - 保存 Bert 微调模型
- javascript - 有没有办法根据另一个对象的值重命名对象属性?
- pdf - 从 PDF 中删除页面时出现 Itext7 空异常错误