幂函数2^n算法(蛮力迭代版)、(优化递归版)

来源:互联网 发布:itools软件 编辑:程序博客网 时间:2024/05/29 03:54

问题描述:

             在禁止超过1位的位移运算的前提下,对任意非负整数n,计算2^n

蛮力迭代版:

// 在禁止超过1位的位移运算的前提下,对任意非负整数n,计算2^n#include <stdio.h>int main(){int n = 5;int pow = 1;      //将累积器初始化为1 while (0 < n--){pow <<= 1;    //O(1)将累积器翻倍 }printf("%d\n",pow); return 0;} 
运行结果:

32


--------------------------------
Process exited with return value 0
Press any key to continue . . .


优化递归版:

主要算法:

             ① n = 0        ② n为奇数           ③n为偶数

//  幂函数 2^n算法(优化递归版)#include <stdio.h>inline int sqr(int a){ return a * a; } int power2(int n){if (0 == n)return 1;     //   奇数                  偶数   return (n & 1)? sqr( power2(n >> 1))<<1 : sqr(power2(n >> 1)); } int main(){printf("%d\n",power2(3));return 0;} 

运行结果:

8


--------------------------------
Process exited with return value 0
Press any key to continue . . .

0 0
原创粉丝点击