当你在循环或嵌套循环中有循环时,让我们说 for-loop,不管编程语言是什么(当然必须是命令式的)
for(int j = 1; j <= 100; j++){
for(int k = 1; k <= 200; k++){
\\body or terms
}
}
是数学等价物,当我想将 i = 1 与所有 j = {1, 200} 和 i = 2 与所有 j = {1, 200} 相加时,依此类推:
而且红圈的条件是不必要的,对吧?
这同样适用于多个嵌套循环?
当你在循环或嵌套循环中有循环时,让我们说 for-loop,不管编程语言是什么(当然必须是命令式的)
for(int j = 1; j <= 100; j++){
for(int k = 1; k <= 200; k++){
\\body or terms
}
}
是数学等价物,当我想将 i = 1 与所有 j = {1, 200} 和 i = 2 与所有 j = {1, 200} 相加时,依此类推:
而且红圈的条件是不必要的,对吧?
这同样适用于多个嵌套循环?
您提供的代码将按照您的说明运行
将 i = 1 与所有 j = {1, 200} 和 i = 2 与所有 j = {1, 200} 相加,依此类推
但是,数学等价物没有红色标记的条件。
带有条件的 sigmas等效于以下代码:
for(int j = 1; j <= 100; j++){
for(int k = 1; k < j; k++){
\\body or terms
}
}
希望我有所帮助。
Sigma 代表求和,这意味着如果您正在处理一个范围的 sigma,i=1,n
定义为x
,那么结果将是 x * n (x + x + x + ... + x
n
次)。转录为伪代码,它会是这样的:
result = 0
for i=1,n:
result = result + x
所以它并没有真正转化为一般for
循环,它更多地是关于doing
某个次数或次数的事情,或者直到满足某个条件。
通常,当您看到数学家研究与软件领域直接相关的算法时,他们使用更灵活的函数符号和递归比求和更多,因为这种函数符号实际上比求和更直接地转换为一般循环计算。