21xrx.com
2025-06-13 18:39:28 Friday
文章检索 我的文章 写文章
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;
    }
  }
}

  
  

评论区