zoukankan      html  css  js  c++  java
  • 基于递归的整数幂的计算

    首先来看一个简单的计算n阶乘的例子:

    int factorial(int n)
    {
    if(n==0)
    return 1;
    else
    return n*factorial(n-1);
    }

    程序虽然简单,确反应了递归的基本思想。

    计算整数幂的的函数,如求a的n次幂。要分n为odd和even

    1.odd   a^n=a^(n/2) * a^(n/2)*a;

    2.even a^n=a^(n/2) * a^(n/2)

    基于这点源码如下:

    #include<stdio.h>
    int power(int a,int n)
    {

    if(a%2==0)
    {
    if(n==1)
    return a;
    else
    return power(a,n/2)*power(a,n/2);
    }
    else
    {
    if(n==1)
    return a;
    else
    return power(a,n/2)*power(a,n/2)*a;
    }
    }

    int main()
    {
    int a,n,result;
    printf("please input a ,n \n");
    while(scanf("%d%d",&a,&n)!=EOF)
    {

    result=power(a,n);
    printf("%d\n",result);
    printf("please input a ,n \n");
    }
    return 0;
    }


    源程序还可以如下的改进:

    }*/
    int power(int a,int n)
    {
    int y;
    if(n==0) y=1;
    else
    {
    y=power(x,n/2);
    y=y*y;
    if(n%2==1)
    y=y*a;
    }
    return y;
    }


    时间复杂度f(n)=f(n/2)+o(1), f(n)=O(lgn); 

    C语言有求幂的函数

     double pow ( double base, double exponent );
    printf("7^3=%lf\n",pow(7,3)); //343.000000

     

     

     

     

  • 相关阅读:
    FPGA开发全攻略——FPGA选型
    FPGA开发全攻略——FPGA开发基本流程
    希尔伯特变换的物理意义
    无线通信方式
    FPGA DDR3调试
    FPGA调试光纤模块
    FPGA FIFO深度计算
    Xilinx FPGA LVDS应用
    电源设计注意事项
    波特图与零极点
  • 原文地址:https://www.cnblogs.com/youxin/p/2398740.html
Copyright © 2011-2022 走看看