Recursion J语言中的递归

Recursion J语言中的递归,recursion,j,Recursion,J,我有一个初始(10x2)向量v1和一个(100x10x10)矩阵Cos。二元动词“move”使用Cos的第(10 x 10)个矩阵作为输入返回另一个(10 x 2)向量 $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

我有一个初始(10x2)向量v1和一个(100x10x10)矩阵Cos。二元动词“move”使用Cos的第(10 x 10)个矩阵作为输入返回另一个(10 x 2)向量

$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

我目前正在阅读J语言维基的递归部分(1:`),但我有点困惑

我应该仅仅使用循环使用^:


提前谢谢你

根据你的描述,我会试试看

move~/\ v1, cos
这将在通过将v1前置到cos形成的列表的连续项之间插入
move
~
(反射副词)意味着插入
move
将首先得到
O{cos move v1
的结果,然后是
1{cos move(0{cos move v1)
,这与
1{cos move(0{p)
相同,根据您上面的定义,这将是
1的值{p
等等,遍历整个数组


递归通常用于将问题分解为更简单的问题,直到向上返回一个答案的情况。由于这似乎不是那种类型的问题,这可能是递归让您感到困惑的原因。

你好,鲍勃。我尝试过这个,但问题是“(1{cos))移动((0{cos)移动v1)“与”(2{Cos)move(p1)不同,“(0{Cos)move v1”与“0{move~/\v1,Cos”完全相同,也就是说,“(1{Cos)move(0{Cos)move v1”不等于“2{move~/\v1,Cos”,而“(0{Cos)move v1”等于“1”{move~/\v1,因为'你知道为什么会发生这种情况吗?谢谢你的帮助=]我在想,
p0
0{p
相同,
p1
1{p
等相同。如果这是真的,
p0
将等于
(0{cos)move(v1)
如果这不是真的,那么我的解决方案就不起作用了。现在我看你写的
0{p=:(0{Cos)move(v1)
(0{Cos)move(v1)
分配给
p
0{p
将返回
p
的第一项,但不会更改该赋值。如果您能提供
move
的代码,可能会有帮助吗?我用一个更简单的动词尝试了您的方法,它在那个简单的动词上运行得非常好。我将首先尝试自己解决这个问题!谢谢您,Bob.J总是向我挑战哪一个是m让学习变得如此有趣=]
move~/\ v1, cos