C语言求幂计算的高效解法

2025-05-27 0 21

本文实例演示了C语言幂计算的高效解法。很有实用价值。分享给大家供大家参考。具体方法如下:

题目如下:

给定base,求base的幂exp

只考虑基本功能,不做任何边界条件的判定,可以得到如下代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50
#include <iostream>

using namespace std;

int cacExp(int base, int exp)

{

int result = 1;

int theBase = 1;

while (exp)

{

if (exp & 0x01)

result = result * base;

base = base * base;

exp = exp >> 1;

}

return result;

}

int getRecurExp(int base, int exp)

{

if (exp == 0)

{

return 1;

}

if (exp == 1)

{

return base;

}

int result = getRecurExp(base, exp >> 1);

result *= result;

if (exp & 0x01)

result *= base;

return result;

}

int main()

{

for (int i = 1; i < 10; i++)

{

int result = cacExp(2, i);

//int result = getRecurExp(2, i);

cout << "result: " << result << endl;

}

return 0;

}

再来看看数值的整数次方求解方法:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75
#include <iostream>

using namespace std;

bool equalZero(double number)

{

if (number < 0.000001 && number > -0.000001)

return true;

else

return false;

}

double _myPow(double base, int exp)

{

if (exp == 0)

return 1;

if (exp == 1)

return base;

double result = _myPow(base, exp >> 1);

result *= result;

if (exp & 0x01)

result *= base;

return result;

}

double _myPow2(double base, int exp)

{

if (exp == 0)

return 1;

double result = 1;

while (exp)

{

if (exp & 0x01)

result *= base;

base *= base;

exp = exp >> 1;

}

return result;

}

double myPow(double base, int exp)

{

if (equalZero(base))

return 0;

if (exp == 0)

return 1;

bool flag = false;

if (exp < 0)

{

flag = true;

exp = -exp;

}

double result = _myPow2(base, exp);

if (flag)

{

result = 1 / result;

}

return result;

}

void main()

{

double base = 2.0;

int exp = -5;

double result = myPow(base, exp);

cout << "result: " << result << endl;

}

相信本文所述对大家C程序算法设计的学习有一定的借鉴价值。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 C语言求幂计算的高效解法 https://www.kuaiidc.com/76134.html

相关文章

发表评论
暂无评论