在递归中使用按引用传递

时间:2016-08-13 13:15:15

标签: c++ recursion reference

int f(int &x, int c) 
{
     c  = c - 1;
     if (c == 0) return 1;
     x = x + 1;
     return f(x, c) * x;
} 

int x = 5;
cout << f(x,5);

在上面的例子中,可供选择的四个答案是:

  1. 3024
  2. 6561
  3. 55440
  4. 161051
  5. 函数 f(int&amp; x,int c)在第一次调用之后调用四次,然后返回基本情况,返回结果 6561 。我的猜测 3024 ,但我错了。即使通过引用传递的 x 变量在每次调用 f(int&amp; x,int c)时递增,并取值 6->分别为7-> 8-> 9 ,该递归的最终结果等于 9 ^ 4 。所以我的问题是:变量 x 通过引用传递,当它到达基本情况时等于 9 。这是否意味着递归的所有阶段都将具有变量 x 的此值,即使它们在被调用时具有不同的值?

0 个答案:

没有答案