[Algorithm] Calculate Pow(x,n) using recursion
Asking you to implement the Math.pow method
The navie implemenation can be:
// O(N)
const pow1 = (x, n) => {
if (n === 0) {
return 1;
} else {
return x * pow1(x, n - 1)
}
} console.log(pow1(2, 8))
// F(8) - (F7) - (F6) - (F5) - (F4) - (F3) - (F2) - (F0)
It takes O(N) time.
Now if we want to improve it to O(logN) time. we can do:
// O(logN)
const pow2 = (x, n) => {
if (n === 0) {
return 1;
}
if (n % 2 === 0) {
const y = pow2(x, n/2);
return y * y;
} else {
return x * pow2(x, n-1);
}
} console.log(pow2(2, 8))
// F(8) - (F4) - (F2) - (F1) - (F0)
[Algorithm] Calculate Pow(x,n) using recursion的更多相关文章
- CURLOPT_SSL_VERIFYPEER CURLOPT_SSL_VERIFYHOST
w /** * Set curl options relating to SSL. Protected to allow overriding. * @param $ch curl handle */ ...
- Java-Class-C:java.util.BigDecimal
ylbtech-Java-Class-C:java.util.BigDecimal 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 1. /* * Copyright (c) 19 ...
- C Primer Plus_第9章_函数_编程练习
1.题略 /*返回较小值,设计驱动程序测试该函数*/ #include <stdio.h> double min (double a, double b); int main (void) ...
- 动态时间归整/规整/弯曲(Dynamic time warping,DTW)
动态时间规整DTW 在日常的生活中我们最经常使用的距离毫无疑问应该是欧式距离,但是对于一些特殊情况,欧氏距离存在着其很明显的缺陷,比如说时间序列,举个比较简单的例子,序列A:1,1,1,10,2, ...
- 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)
我们来看一个灰度图像,让表示灰度出现的次数,这样图像中灰度为 的像素的出现概率是 是图像中全部的灰度数, 是图像中全部的像素数, 实际上是图像的直方图,归一化到 . 把 作为相应于 的累计概率 ...
- [Algorithms] Divide and Recurse Over an Array with Merge Sort in JavaScript
Merge sort is a recursive sorting algorithm. If you don't understand recursion, I recommend finding ...
- 数据库路由中间件MyCat - 使用篇(4)
此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 配置MyCat 3. 配置conf/rule.xml 1.5GA版本中的规则配置比较笨,2.0中优化了一些, ...
- OPENCV(5) —— 图像直方图
新版本对直方图不再使用之前的histogram的形式,而是用统一的Mat或者MatND的格式来存储直方图,可见新版本Mat数据结构的优势. C++: void calcHist(const Mat* ...
- 50. Pow(x, n) (recursion)
Implement pow(x, n), which calculates x raised to the power n (xn). Example 1: Input: 2.00000, 10 Ou ...
随机推荐
- C++ code:char pointers and char arrays(字符指针与字符数组)
C-串的正确赋值.复制.修改.比较.连接等方式. #include<iostream> #pragma warning(disable: 4996)//这一句是为了解决“strrev”出现 ...
- wpf 加阴影效果导致内容模糊的问题解决
这个和GPU有关,参考地址 https://www.cplotts.com/2009/02/25/gpu-effects-blurry-text/ 产生问题的代码如下: <Window x:Cl ...
- Java中加密算法介绍及其实现
1.Base64编码算法 Base64简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.可查看RFC2045-RF ...
- django----数据库表设计
设计表时注意的几点: 1. nid = models.AutoField(primary_key=True) #如果不指定django会默认加上id的 nid = models.BigA ...
- poj2528贴海报,,
对于区间段的离散化需要注意一下,和点离散化不同 离散后如何识别一段区间还是一段区间,而不是两个顶点,就是如果两个点的距离大于1,就往离散的数据里插入一个中间值,即用三个点来表示一段区间 /* 离散化长 ...
- Guice 依赖绑定
Guice 依赖绑定 连接绑定(Linked Bingdings) 连接绑定是 Guice 最基本的一种绑定方式.这种绑定方式我们需要在自己定义的 Module 的 configure() 中编写绑定 ...
- oracle中计算某月的天数
select add_months(to_date('201202', 'YYYYMM'),1)-to_date('201202', 'YYYYMM') from dual
- Python内置数据结构--列表
本节内容: 列表 元组 字符串 集合 字典 本节先介绍列表. 一.列表 一种容器类型.列表可以包含任何种类的对象,比如说数字.子串.嵌套其他列表.嵌套元组. 任意对象的有序集合,通过索引访问其中的元素 ...
- 多版本并发控制(MVCC)
可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低. 虽然实现机制有所不同,但大都实现了非阻塞的读操作,写操作也只锁定必要的行. MVCC的实现是通过保存数据在某个时间 ...
- -webkit-line-clamp超出省略
以前只用过超出一行显示省略号 有时候会碰到只显示两到三行,超出省略 -webkit-line-clamp属性就能解决这个问题 text-overflow: -o-ellipsis-lastline; ...