我正在尝试实现分而治之的矩阵乘法(8递归版本,而不是Strassen)。我想我已经弄清楚了,但是它产生了奇怪的输出,有太多的嵌套列表和错误的值。我怀疑问题是我如何对8次递归求和,但我不确定。 n = len(x) return x[0][0] * y[0][0] a = [[col for col in row[:len(row)/2]] for row in x[:len(x)/2]]
b = [[col for col in row[len(
这段代码,在每一个循环循环中,都会创建两个更小的段,并将其添加到数字0中。问题是,如果你除以50,你得到25和25,如果你分裂51,你也得到25。这个x和y应该表示数组索引,因此它们从0开始。如果您知道更好的迭代算法(不能使用递归),我会很高兴看到它,但是我真的很想用这种方式解决这个问题(除非它无法完成)。#include <stdlib.h>
{ int a, b, x, r, y; scanf