我试图理解这个循环模式:
for {
// Shift n right by 1 before looping to halve it.
n := shr(1, n)
} n {
// Shift n right by 1 each iteration to halve it.
n := shr(1, n)
} { ... }我想它可以被翻译成
for(uint256 n = n/2; n > 0; n = n/2) { ... }
OR
for(n >> 1; n > 0; n >> 1) { ... }是这样吗?我主要关注停止(中间)参数,但可能甚至其他参数都不正确。
发布于 2022-10-21 19:05:21
这件事解决了。我很肯定这是正确的,因为我现在可以得到我想要的结果。
https://ethereum.stackexchange.com/questions/137883
复制相似问题