21xrx.com
2024-12-22 20:44:37 Sunday
登录
文章检索 我的文章 写文章
C语言如何实现n次方运算
2023-06-15 17:02:26 深夜i     --     --
C语言 n次方 循环 递归

在C语言中,计算n次方可以使用循环或递归的方法来实现。下面分别介绍这两种方法的实现过程。

第一种方法:循环法

循环方法比较直观,并且可以方便地控制计算过程。

首先需要定义两个变量,一个记录结果,一个记录循环次数。然后在循环内部,每次将结果乘以底数,循环n次后就可以得到底数的n次方。代码如下:


#include

double power(double base, int exponent);

int main()

{

  double base;

  int exponent;

  printf("请输入底数:");

  scanf("%lf", &base);

  printf("请输入指数:");

  scanf("%d", &exponent);

  printf("%lf的%d次方为:%lf\n", base, exponent, power(base, exponent));

  return 0;

}

double power(double base, int exponent)

{

  double result = 1.0;

  int i;

  for (i = 0; i < exponent; i++)

  {

    result *= base;

  }

  return result;

}

第二种方法:递归法

递归方法相对来说比较简洁,但是相对来说效率较低。

递归方法的思路是将x^n转化为x^(n/2) * x^(n/2),如果n为偶数,则直接递归求x^(n/2);如果n为奇数,则将x^(n/2)分别计算两遍并相乘。

代码如下:


#include

double power(double base, int exponent);

int main()

{

  double base;

  int exponent;

  printf("请输入底数:");

  scanf("%lf", &base);

  printf("请输入指数:");

  scanf("%d", &exponent);

  printf("%lf的%d次方为:%lf\n", base, exponent, power(base, exponent));

  return 0;

}

double power(double base, int exponent)

{

  if (exponent == 0)

  

    return 1.0;

  

  else if (exponent == 1)

  

    return base;

  

  else

  {

    double result = power(base, exponent / 2);

    if (exponent % 2 == 0)

    {

      return result * result;

    }

    else

    {

      return result * result * base;

    }

  }

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复