【发布时间】:2017-12-15 18:33:47
【问题描述】:
我想我正在理解递归背后的原理,例如堆栈式行为以及程序“溜溜球”通过函数调用返回的方式,我似乎无法弄清楚为什么某些函数返回值尽管他们这样做了,下面的代码返回 160,这是因为返回 5 起作用吗?我想我说得对,它会变成 4*2 + 8*2 + 12*2 等等。我是不过在改变我的价值观时真的很怀疑。
有人能简要解释一下哪些值被相乘了吗?
cout << mysteryFunction(20);
int mysteryFunction (int n)
{
if(n > 2)
{
return mysteryFunction(n - 4)*2;
}
else return 5;
}
【问题讨论】:
-
公式为:
5*2^x,当x在公式中为:20/4 = 5。因此:5*2^5 = 160