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