如何实现下面的代码,但没有第一个循环?问题是,num 循环中的每 4 个 re 都会给出+1 num。但你不能把它们推入一个循环。
该函数的工作原理如下:有 num - 函数被触发的次数;有 re - 一个端到端计数器,其中存储所有旧周期 num。
我这样做了:
uint256 num = 35;
uint256 re = 3;
uint256 ever = 4;
uint256 tmp = 0;
for (uint256 i=0; i<num; i++) {
re++;
if (re % ever == 0) {
tmp++;
}
}
num = num + tmp;
for (uint256 i=0; i<num; i++) {
func();
}
答案:num = 44,re = 38。这些是正确答案。
如何实现同样的事情,但没有第一个循环?类似的事情,但这只是错误的例子。您可以使用公式 (x+y-1)/y 以某种方式完成此操作。
uint256 tmp = (num.add(ever).sub(1)).div(ever);
num = num.add(tmp);
问题已解决。感谢@stanislav-volodarskiy 和@mbo
tmp = (re + num + 曾经) / 曾经 - (re + 曾经) / 曾经;