给定以下递归函数:

// Pre-condition: y is non-negative.
int mysterious(int x, int y) {
    if (y == 0) return x;
    return 2*mysterious(x, y-1);
}

神秘(3,2)的返回值是多少?
这是我的呼叫堆栈:
return 2*mysterious(3, 2-1) => 2*3 => 6, 2*1 => mysterious(6,2)
return 2*mysterious(6, 2-1) => 6*2 => 12, 2*2 => mysterious(12, 2)

但看起来y永远不会达到0。我做错什么了?

最佳答案

神秘的(3,2)
=2*神秘(3,1)
=2*2*神秘(3,0)
=2*2*3个
=12个

09-08 09:50