上周我在测试中得到了这个问题:
/* 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) );
}
如果有人能帮我解决这个问题,我将不胜感激。谢谢你们!
答案 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)!