带有一条语句的第一个循环A[i,j]=B[i-1,j];
只有一条语句的第二个循环B[i,j]=A[i,j];
我能把这两个独立的回路融合成一个回路吗。
这合法吗??
不,不能将它们组合成一个循环,如下Python测试程序所示:
a = [1,2,3,4]
b = [5,6,7,8]
for i in range(1,len(a)):
a[i] = b[i-1]
for i in range(1,len(a)):
b[i] = a[i]
print a, b
a = [1,2,3,4]
b = [5,6,7,8]
for i in range(1,len(a)):
a[i] = b[i-1]
b[i] = a[i]
print a, b
它的输出会给你两个不同的结果:
[1, 5, 6, 7] [5, 5, 6, 7]
[1, 5, 5, 5] [5, 5, 5, 5]
它们不等价的原因是,在双循环解决方案中,a[n]
是基于b[n-1]
的原始值设置的。
在单循环解决方案中,基于b[n-1]
的更新值来设置a[n]
。
并且b[n-1]
将在循环的上一次迭代中被改变。