2010-12-03 40 views
1

到目前爲止,所有的iive都是定義。試圖遞歸地實現功率和因子函數。 C++

double power(double base, int exponent); 

double factorial(double n); 

然後,我完全失去了,我正在尋找想法。

+2

這在SO或Google的歷史中從未被問及過。 : - 〜 – 2010-12-03 20:19:58

+1

但我的建議是,你再讀一遍關於遞歸的講義。 – 2010-12-03 20:21:13

回答

8

好,3^4是3 * 3 * 3 * 3,也就是3 * 3^3。 3^3是3 * 3^2。 3^2是3 * 3^1。 3^1是3.

5!是5 * 4 * 3 * 2 * 1。這是5 * 4 !. 4!是4 * 3 !. 3!是3 * 2 !. 2!是2 * 1 !. 1!爲1

這應該給你足夠的越來越與...

0
int factorial(int n){ 
if(n==0) return 1; 
else return n*factorial(n-1);} 


int power(int number, int p){ 
     if(p==1) return number; 
     else return number*power(number, p-1); 
} 
0
double power(double base, int exponent) 
{ 
    if (exponent == 0) 
      return 1; 
    else 
      return base * power(base, exponent - 1); 
} 

double factorial(double n) 
{ 
    if (n == 0) 
      return 1; 
    else 
      return n * factorial(n - 1); 
} 
0

嘗試解決這個不首先使用遞歸(如果你在實際編寫這些功能的產品代碼,遞歸反正會傷害他們的表現)。在你開始工作之後,將它轉換爲遞歸算法應該是一件簡單的事情。

建議:

N! = N *(N-1)!

N^P =產品從1到P的N

0

其他人似乎都認爲exp是正數。如果這對您的應用程序很重要,可能可以修改爲正確處理0^0作爲NaN而不是1。

double int_power(double base, int exp) { 
    if (exp == 0) 
     return 1; 
    if (exp > 0) 
     return base*int_power(base, exp-1); 
    else 
     return int_power(base, exp+1)/base; 
}