C语言第二十七弹--求n的k次方

简介: C语言第二十七弹--求n的k次方

求n的k次方

方法一、递归法

思路:使用递归首先要明确开始条件和结束条件,要每次递层递归要不断接近开始结束条件,这样子才能够不会导致栈溢出问题。那么开始条件其实有两个,一个是当k等于0时,无论n为多少都是1,二是当n、k都为1时返回1。求n的k实质是,n * n * n(执行k次),那么递归条件就可以写为n * 函数(n,k-1)。

代码如下

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int setpower(int n, int k)
{
  if (k == 0)
  {
    return 1;
  }
  else if (n == 1 && k == 1)
  {
    return 1;
  }
  else
  {
    return n * setpower(n,k - 1);
  }
}
int main()
{
  int n = 0;
  int k = 0;
  scanf("%d %d",&n,&k);
  int ret = setpower(n,k);
  printf("%d",ret);
  return 0;
}

方法二、非递归

思路:通过循环k次,每次乘积使用一个临时值接收最后返回临时值即可。

代码如下

int setpower(int n, int k)
{
  int tmp = 1;
  while (k--)
  {
    tmp *= n;
  }
  return tmp;
}
int main()
{
  int n = 0;
  int k = 0;
  scanf("%d %d",&n,&k);
  int ret = setpower(n,k);
  printf("%d",ret);
  return 0;
}
相关文章
|
7月前
|
存储 编译器 程序员
C语言第十六弹---操作符(下)
C语言第十六弹---操作符(下)
|
7月前
|
存储 C语言 C++
C语言第二十七弹---内存函数
C语言第二十七弹---内存函数
|
7月前
|
存储 C语言 C++
C语言第十五弹---操作符(上)
C语言第十五弹---操作符(上)
|
7月前
|
存储 编译器 C语言
C语言第十七弹---指针(一)
C语言第十七弹---指针(一)
|
7月前
|
存储 C语言
C语言第二十四弹---指针(八)
C语言第二十四弹---指针(八)
|
7月前
|
存储 安全 程序员
C语言第十八弹---指针(二)
C语言第十八弹---指针(二)
|
7月前
|
算法 C语言
C语言第二十一弹---指针(五)
C语言第二十一弹---指针(五)
|
7月前
|
存储 C语言 C++
C语言第二十弹---指针(四)
C语言第二十弹---指针(四)
|
7月前
|
C语言
C语言第二十二弹---指针(六)
C语言第二十二弹---指针(六)
|
7月前
|
编译器 C语言
C语言第二十三弹---指针(七)
C语言第二十三弹---指针(七)