鍍金池/ 問答/C++/ 用一個(gè)指定要放入兩個(gè)右值參數(shù)的function做階層

    用一個(gè)指定要放入兩個(gè)右值參數(shù)的function做階層

    Q.最近看到了一個(gè)題目如下,要用一個(gè)函數(shù)做出兩個(gè)數(shù)字相加後的階層,並用遞迴方式寫出:

    "Implement a C++ function that computes the factorial of the summation of the two integers using rvalue references as arguments.The function needs to be a recursive function."

    我知道怎麼用兩個(gè)函數(shù)做出來,但是實(shí)在不知道怎麼濃縮成一個(gè)函數(shù)...請大神幫忙!

    回答
    編輯回答
    柒槿年
    int fac(int &&a, int &&b) {
      if (b == 0)
        return a > 0 ? fac(a-1, 0) * a : 1;
      return fac(a+b, 0);
    }

    int fac(int &&a, int &&b) {
      if (a > 0)
        return fac(a-1, b+0) * (a+b);
      else if (b > 0)
        return fac(a+0, b-1) * (a+b);
      else
        return 1;
    }
    2018年3月24日 03:43
    編輯回答
    眼雜
    unsigned int fac(unsigned int&& n1, unsigned int&& n2)
    {
        if(n1+n2 == 0) return 1;
        return (n1+n2) * fac(n1+n2-1, 0);
    }

    不知道是否滿足要求,不過這個(gè)題是在考察啥.

    2017年9月18日 00:48