求大佬解释一下这个代码

2025-02-22 13:10:05
推荐回答(1个)
回答1:

经过分析,这段代码里面的fromPos和toPos完全没起作用。t也没有起作用。所以化简后的代码是

int fun(int n) {
    if (n == 0)
        return 0;
    int tot = 0;
    tot += fun(n - 1);
    tot++;
    tot += fun(n - 1);
    return tot;
}

再把冗余的操作合并一下,得到

int fun(int n) {
    if (n == 0)
        return 0;
    return 2 * fun(n - 1) + 1;
}

这下简洁明了了。

这其实就是在算一个数列。这个数列的a(0)=0,然后a(n) = 2*a(n-1) + 1