经过分析,这段代码里面的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