本章内容出自《妙趣横生的算法》,发表文章的目的是为了上下班做地铁的人,尽量少看些垃圾的东西,多充实下自己;仅此而已。
题目要求:
请编写一个递归算法,计算mn。
题目分析:
一般情况下计算mn时多采用循环连乘的方法,即把m连乘n次。这种方法的效率是很低的。现在介绍一种更为有效的算法来计算整数的幂——递归法。
#include "stdio.h"
unsigned long myPow(int m,int n)
{
unsigned long tmp;
if(n == 0) return 1;
if(n == 1) return m;
if(n % 2 == 0){
tmp = myPow(m,n/2);
return tmp * tmp;
}
if(n % 2 != 0)
return m * myPow(m,n-1);
}
main()
{
int m,n;
printf("Please input the bottom number
");
scanf("%d",&m); /*输入底数m*/
printf("Please input the exponent number
");
scanf("%d",&n); /*输入指数n*/
printf("The result of power(m,n) is %ld
",myPow(m,n));
/*输出计算结果mn*/
getche();
}
运行结果:
运行结果
留言与评论(共有 0 条评论) “” |