到目前为止,我所有的定义都是定义。
double power(double base, int exponent);
double factorial(double n);
在此之后,我完全迷失了,我正在寻找想法。
答案 0 :(得分: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。
这应该足以让你继续......
答案 1 :(得分:3)
首先阅读以下内容:
答案 2 :(得分: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);
}
答案 3 :(得分: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);
}
答案 4 :(得分:0)
尝试在不使用递归的情况下解决此问题(如果您实际上是为生产代码编写这些函数,则递归会损害它们的性能)。在你开始工作之后,将它转换为递归算法应该是一件简单的事情。
提示:
N! = N *(N-1)!
N ^ P =从1到P的产品
答案 5 :(得分: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;
}