您的位置:首页 > 编程语言 > C语言/C++

用c语言编写求n的k次方函数,用迭代和递归两种方法

2017-11-10 21:24 295 查看
在c语言中求n的k次方函数。虽然c语言中库函数中已经存在,但是知道它的代码或者实现思想也是很必要的。
那么我们用两种方式来实现:

第一种:迭代法(效率在数据量比较大时要相比递归快一点)

int power_ineration(int n,int k)//迭代
{
int q = n;
int p = k-1;
if(k == 0)
{
return 1;
}
while(p--)
{
n = n*q;
}
return n;
}
第二种递归:

int power_recursion(int n,int k)//递归
{
if(k==0)
{
return 1;
}
if(k == 1)
{
return n;
}
return n*power_recursion(n,k-1);
}
在写时候要注意一些边边角角的值,比如输入k==0时,值为1;

但是写成这样代码还是有BUG,如果输入k值为负数,程序就崩溃了,
所以细心且考虑要全面很重要;
我们来看看正确的代码的实现:
#include<stdio.h>//power()
#include<assert.h>
int power_ineration(int n,int k)//迭代
{
int q = n;
int p = k-1;
assert(k>=0);
if(k == 0)
{
return 1;
}
while(p--)
{
n = n*q;
}
return n;
}
int power_recursion(int n,int k)//递归
{
assert(k>=0);
if(k==0)
{
return 1;
}
if(k == 1)
{
return n;
}
return n*power_recursion(n,k-1);
}
int main()
{
int result = 0;
int n = 0;
int k = 0;
printf("plesase input n and k:\n");
scanf("%d%d",&n,&k);
result = power_recursion(n,k);
result = power_ineration(n,k);
printf("%d\n",result);
return 0;
}

看看结果:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: