假设我们有一个循环,索引变量 n
从 1 计数到 6。当我完成这个循环时,我想打印值
1
2
3
3
2
1
是否有一个优雅的数学运算(即避免 if
语句)可以实现这个?我知道例如如果我打印
1 + modulo(n-1,3)
它会打印
1
2
3
1
2
3
但我希望下半场逆转。如果有帮助,循环将始终具有偶数次迭代。我正在用 Fortran 90 编写。
最佳答案
以下情况如何:
do i=1,n
print *, int(abs(i-n/2.0-0.5)+0.5)
end do
这将为偶数 n
打印预期结果,并为奇数 n
引入零。
关于algorithm - 反射(reflect)循环迭代器关于迭代次数中点的数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52652309/