algorithm - 反射(reflect)循环迭代器关于迭代次数中点的数学运算

标签 algorithm loops sorting fortran countdown

假设我们有一个循环,索引变量 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/

相关文章:

algorithm - 线段树的合并函数

video - ffmpeg:编码视频时如何循环音频?

c++ - 字符串的字典序比较[不区分大小写]

python - Pandas :根据条件在每个组中创建一个新行

javascript - 按年份/日期对 json 进行排序 (JSON/nodeJS)

algorithm - 以递增的运行时间对流程进行排序是创建一组非重叠流程的最佳方式吗?

寻找树对称性的算法

java - 尝试使用我自己的程序来理解 Hanoi 算法

c - 二进制搜索算法的平均性能?

php - 循环中的错误数组值