c语言计算递归法求幂

本章内容出自《妙趣横生的算法》,发表文章的目的是为了上下班做地铁的人,尽量少看些垃圾的东西,多充实下自己;仅此而已。

题目要求:

请编写一个递归算法,计算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();
}

运行结果:

c语言计算递归法求幂

运行结果

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章