尝试递归地实现幂和阶乘函数。 C ++

时间:2010-12-03 20:17:35

标签: c++ function

到目前为止,我所有的定义都是定义。

double power(double base, int exponent);

double factorial(double n);

在此之后,我完全迷失了,我正在寻找想法。

6 个答案:

答案 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;
}