JavaScript累加、迭代、穷举、递归等常用算法实例小结
累加
累加即将一个数字序列中的所有数字相加。
function sum(numbers) {
let result = 0;
for (let i = 0; i < numbers.length; i++) {
result += numbers[i];
}
return result;
}
该函数接收一个数字数组 numbers
,定义了一个变量 result
来存储输出结果,然后使用 for
循环遍历数组中的每个数字,将其累加到 result
中,并在循环结束后返回 result
。
迭代
迭代可以理解为一个或多个操作在同一数据的一系列值上执行的过程。这样的操作通常是针对数组、集合、列表等具有有限个数元素的数据结构。
function iterate(numbers) {
let result = [];
for (let i = 0; i < numbers.length; i++) {
result.push(numbers[i] * 2);
}
return result;
}
该函数接收一个数字数组 numbers
,定义了一个数组 result
来存储输出结果,然后使用 for
循环遍历数组中的每个数字,计算其乘以 2 的结果并添加到 result
数组中,并在循环结束后返回 result
。
穷举
穷举即尝试所有可能的组合,以便找到满足某个条件的最优解。例如,在一个通过遍历所有可能的走法来解决的数学难题中,穷举法可以让你找到正确的答案。
function permutations(input) {
let result = [];
const permute = (arr, m = []) => {
if (arr.length === 0) {
result.push(m);
} else {
for (let i = 0; i < arr.length; i++) {
const current = arr.slice();
const next = current.splice(i, 1);
permute(current.slice(), m.concat(next));
}
}
};
permute(input);
return result;
}
该函数接收一个字符串 input
,定义了一个数组 result
来存储输出结果,在内部定义了一个递归函数 permute
来穷举所有可能的排列组合。具体来说,permute
函数会将输入的数组拆分成两部分:第一部分是由所有已选的元素组成,第二部分则是所有未选择的元素。然后,函数遍历第二部分中所有元素,并将每个元素依次添加到选中元素的队列中。最后,permute
函数将递归调用自己,在每次调用时使用剩余的未选元素重复上述过程,直到所有元素都被选择为止。
递归
递归是一种算法模式,其中函数通过调用自身来实现重复执行某个操作的方式。递归允许将复杂的问题分解为更简单的子问题来解决,从而更容易理解和处理较大的问题。
function factorial(n) {
if (n === 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
该函数接收一个数字 n
作为输入,并使用递归的方式来计算该数的阶乘。如果输入数为 1,则返回 1;否则,该函数将调用自身,并将输入的数减去 1 传递给递归函数,直到计算结果为 1。最后,factorial
函数将所有的计算结果相乘并返回。例如,当传入 n=5 时,函数将计算 5x4x3x2x1 的结果并返回 120。
以上是 JavaScript 累加、迭代、穷举、递归等常用算法的基本实例。这些算法不仅在 JavaScript 中很常用,在其他编程语言中同样得到了广泛应用。通过了解这些算法的实现原理,你将能够更好地理解 JavaScript 的编程范式,并且更高效地解决复杂的编程任务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript累加、迭代、穷举、递归等常用算法实例小结 - Python技术站