for ,while, do-while 三种循环方式的性能对比?怎么改善?
三种循环性能相当。需要避免使用 for-in 循环。
改善循环性能的最佳方式是减少每次迭代的运算量和减少循环的迭代次数。
倒序循环为什么能提高循环性能?
// 正序
let len = items.length
for (let i = 0; i < len ; i++) {
}
// 倒叙
for (let i = items.length; i-- ; ) {
}
因为减少了迭代的运算量 。
控制条件从两次比较(是否迭代数小于总数?它是否为 true)减少到一次比较(是否为 true)
举例怎么用迭代代替递归实现?
//斐波那契数列的递归形式
function fibonacci(num) {
if(num ===1 || num ===2) {
return 1
}
return fibonacci(num - 1) + fibonacci(num - 2)
}
//迭代形式
function fib(num) {
var n1 = 1,
n2 = 1,
n = 1;
for(var i=3;i<=num;i++){
n = n1 + n2
n1 = n2
n2 = n
}
return n
}