bool odd (unsigned int x) {
    return (x%2);
}

int Russian_peasant (unsigned int m, unsigned int n) {

    int sum = 0;

    if (odd(m))
        sum = n;

    while (m > 1) {
        m = m/2;
        n = 2*n;

        if (odd(m))
            sum += n;
    }
    return sum;
}

int main() {
    cout << Russian_peasant(4, 5) << " ";
    cout << Russian_peasant(3, 8) << " ";
    cout << Russian_peasant(213, 100) << " ";
}

这是C中循环和控制的基本代码 . 任何人都可以解释为什么输出是 20 24 21300 请详细说明吗?谢谢 .