C++程序 计算pow(x,n)
给定两个整数x和n,编写一个函数来计算xn。我们可以假设x和n很小,不会溢出。
示例:
输入: x = 2,n = 3
输出: 8
输入: x = 7,n = 2
输出: 49
下面的解决方案将问题分为大为y/2的子问题,并递归调用子问题。
输出:
时间复杂度: O(n)
空间复杂度: O(1)
算法范式:分而治之。
上述功能可以通过仅计算power(x,y/2)一次并存储它来优化为O(logn)。
优化后的解决方案时间复杂度: O(logn)
辅助空间: O(1)
让我们将pow函数扩展为适用于负y和浮点x。
输出:
时间复杂度: **辅助空间: O(1)
使用递归:
这种方法与迭代解决方案几乎相同。
输出:
时间复杂度: O(n)
辅助空间: O(1)
使用java的Math.pow()函数:
输出:
时间复杂度: O(1)
辅助空间: O(1)
非递归方法:
这是一种非常适合新手的高效方法,他们很难理解迭代递归调用。此方法还需要 T(n)=O(log(n)) 的复杂度。
输出:
时间复杂度: O(log2y)
辅助空间: O(1)
使用二进制运算符:
在这里,我们使用右移运算符“>>”来找到一个数字的幂。
输出:
时间复杂度: O(log n)
辅助空间: O(1)