递归计算函数的值f = n!/(c ^ n)

时间:2017-09-02 13:45:03

标签: c++ recursion

上周我在测试中得到了这个问题:

/* Task 1: Implement the following function for calculating the value of
       the function f = n!/(c^n).
*/

float func(int n, int c) {

}

我试图在事后找出答案,因为这是我在测试期间无法解决的问题(递归是我努力的事情)。

这是我到目前为止的尝试:

float result = 0;

// n!*c^n-1
float func( int n, int c )
{
    if( n == 0 )
       return result;

    result += n*c;
    return func( n*n-1, pow(c,-n) );
}

如果有人能帮我解决这个问题,我将不胜感激。谢谢你们!

1 个答案:

答案 0 :(得分:0)

    float result = 1;

// n!*c^n-1
float func( double n, double c )
{
    if( n == 0 )
       return result;

    return func(n-1,c )*(n/c);
}

这是用来解决这个问题的算法 我将函数的参数从int更改为double,因为最后一行包含(n / c),如果c不是n的除数,整数devision会导致错误的答案

您应该注意到f(n,c) =f(n-1,c)*(n/c)因为n!=n*(n-1)!