到目前爲止,所有的iive都是定義。試圖遞歸地實現功率和因子函數。 C++
double power(double base, int exponent);
double factorial(double n);
然後,我完全失去了,我正在尋找想法。
到目前爲止,所有的iive都是定義。試圖遞歸地實現功率和因子函數。 C++
double power(double base, int exponent);
double factorial(double n);
然後,我完全失去了,我正在尋找想法。
好,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
這應該給你足夠的越來越與...
開始通過閱讀這些:
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);
}
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);
}
嘗試解決這個不首先使用遞歸(如果你在實際編寫這些功能的產品代碼,遞歸反正會傷害他們的表現)。在你開始工作之後,將它轉換爲遞歸算法應該是一件簡單的事情。
建議:
N! = N *(N-1)!
N^P =產品從1到P的N
其他人似乎都認爲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;
}
這在SO或Google的歷史中從未被問及過。 : - 〜 – 2010-12-03 20:19:58
但我的建議是,你再讀一遍關於遞歸的講義。 – 2010-12-03 20:21:13