在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;
}
看看结果: