用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;
}
看看结果:
那么我们用两种方式来实现:
第一种:迭代法(效率在数据量比较大时要相比递归快一点)
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;
}
看看结果:
相关文章推荐
- C语言实现斐波那契数列的两种方法(递归和迭代)
- JAVA:递归和迭代两种方法计算斐波那契数列
- 用递归和迭代这两种方法求n的阶层:n!
- C语言循环和递归两种方法求n的阶乘
- 矩阵链乘法 poj 1651 递归和迭代两种方法
- 递归 / 迭代两种方法实现查找指定目录下所有文件
- 【C语言】用递归和循环两种方法实现单链表倒置
- LeetCode Symmetric Tree递归,迭代两种方法
- python语言实现阶乘的两种方法---递归和迭代
- 用C语言编写程序求一个1!+2!+3!+4!...(两种方法)
- n皇后问题的两种递归方法C语言实现
- 8皇后问题递归和迭代方法 打印皇后位置
- ASP.net组件编程中的两种事件编写方法
- C语言 迭代部分的代码编写
- 【leetcode】101. Symmetric Tree【java】递归和非递归两种方法
- 【C语言】递归和迭代的区别
- 用java语言编写一个类,使该类包含一个方法f(),该方法具有可以输出同时带有大小写两种形式英文字母表的功能。
- PHP两种实现无级递归分类的方法
- 小结两种在Python中导入C语言扩展库的方法
- 二分查找 (循环、递归两种方法)