J语言中的递归
Recursion in J language
我有一个初始 (10 x 2) 向量 v1 和一个 (100 x 10 x 10) 矩阵 Cos。二元动词 'move' returns 另一个 (10 x 2) 向量使用来自 Cos 的 (10 x 10) i 矩阵作为输入。
$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 语言维基中的递归部分 (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
的值,依此类推整个数组。
递归通常用于可以将问题分解为更简单的问题直到向上链返回答案的情况。由于这看起来不像是那种类型的问题,这可能是递归让您感到困惑的原因。
我有一个初始 (10 x 2) 向量 v1 和一个 (100 x 10 x 10) 矩阵 Cos。二元动词 'move' returns 另一个 (10 x 2) 向量使用来自 Cos 的 (10 x 10) i 矩阵作为输入。
$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 语言维基中的递归部分 (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
的值,依此类推整个数组。
递归通常用于可以将问题分解为更简单的问题直到向上链返回答案的情况。由于这看起来不像是那种类型的问题,这可能是递归让您感到困惑的原因。