2017-09-02 124 views
-1

我上週給這個問題在測試/(C^N):遞歸計算函數f值= N

/* 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

提示:!'N /(C^N)''==(N-1)* N /((C ^(N-1)* c)'。換句話說,'f(n,c)== f(n-1,c)* n/c'。在代碼中表達這一點是留給讀者的。 –

回答

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加倍,因爲最後一行包含algorythm(N/C)和整數等分導致錯誤的答案,如果c不爲除數n個

你應該注意到f(n,c) =f(n-1,c)*(n/c)因爲n!=n*(n-1)!