我有一个初始(10 x 2)向量v1和一个(100 x 10 x 10)矩阵Cos。二元动词'move'使用第(10 x 10)个第i个矩阵返回另一个(10 x 2)向量来自Cos作为输入。
$Cos
100 10 10
$v1
10 2
v1
0.89 0.91
0.01 0.24
0.88 0.43
0.43 0.32
0.85 0.84
0.27 0.31
0.1 0.11
0.49 0.9
0.2 0.28
0.66 0.96
(0{Cos) move v1
1 1
0.426426 0
0.819478 0.304798
0.66484 0.0362481
0.505905 0.278294
0.149514 0.0516271
0 0.40583
0.233825 0.759351
0.03464 0.630262
0.502968 0.686788
我想使用递归使矩阵
$p
100 10 2
喜欢
0{p =: (0{Cos) move (v1)
1{p =: (1{Cos) move (p0)
2{p =: (2{Cos) move (p1)
...
我目前正在阅读J语言Wiki中的递归部分(1:`),但我有些困惑。
我应该只使用^:循环吗?
提前谢谢
答案 0 :(得分:1)
根据您的描述,我会尝试
move~/\ v1, cos
这会将move
插入在将v1前置为cos形成的列表的连续项之间。 ~
(反射副词)意味着您插入move
首先将得到O{cos move v1
的结果,然后是1{cos move (0{cos move v1)
,其结果与1{cos move (0{p)
相同,并且您在上面的定义将是1{p
的值,依此类推,直到整个数组。
通常将递归保留给那些可以将问题分解为更简单的问题,直到将答案返回链的情况。由于这似乎不是这种类型的问题,因此这可能是递归使您感到困惑的原因。