Logo
Section 1 / 11

迭代函数概述

在这里,我们将学习迭代的定义,以及迭代函数的格式和语法。

导入

迭代函数概述

在这里,我们将学习迭代的定义,以及迭代函数的格式和语法。

什么是迭代?

迭代是指重复执行某些步骤以达到预期结果。在计算机编程中,这通常涉及一种机制,例如 循环。

迭代代码是一段在循环中运行的代码块。换句话说,相同的代码会反复执行。这一概念与递归类似。

当我们学习递归时,了解迭代的概念也同样重要。你可能已经编写过一些简单的程序,这些程序需要对数组、列表等进行 迭代。

递归和迭代的核心思想都是重复执行一组指令。

然而,它们之间的区别在于:递归本质上是一次 方法调用,其中被调用的方法与调用它的方法相同。而迭代则是指循环不断执行,直到满足某个特定条件为止。

无论是递归还是迭代,都依赖于一个 条件,该条件决定是继续执行还是停止执行。

迭代函数的格式

每个迭代函数都包含一个循环以及一个用于判断是否继续迭代或停止的条件语句。

...
迭代函数的代码流程图。

如上图所示,虚线框所包围的部分代表了代码流程中的 迭代 部分。

迭代函数的语法

让我们来看看 JavaScript 中如何编写一个迭代函数:

1function IterativeFunction() { 2 // 如有需要,声明局部变量 3 while (<someCondition == true>) { 4 // 执行某项任务 5 } 6}

计算一个数的阶乘

下面我们来看一下计算阶乘的迭代实现代码。我们之前已经在上一课中学习过递归版本。

迭代版本

1function factorial(targetNumber) { 2 var index = targetNumber - 1; // 将索引设置为 targetNumber - 1 3 4 while(index >= 1) { 5 targetNumber = targetNumber * index; // 将 targetNumber 乘以比它小 1 的数(即这里的 index) 6 index -= 1; // 每次迭代将 index 减 1 7 } 8 9 return targetNumber; 10} 11 12// 驱动代码 13var targetNumber = 5; 14var result = factorial(targetNumber); 15console.log("数字 " + targetNumber + " 的阶乘是: " + result);

递归版本

1function factorial(targetNumber) { 2 // 基础情况 3 if (targetNumber == 1) { // 1 的阶乘是 1 4 return 1; 5 } 6 7 // 递归情况 8 else { 9 return (targetNumber * factorial(targetNumber - 1)); 10 } 11} 12 13// 驱动代码 14var targetNumber = 5; 15var result = factorial(targetNumber); 16console.log("数字 " + targetNumber + " 的阶乘是: " + result);

在 迭代 版本中,我们使用了一个简单的 while 循环,在每次迭代中将 targetNumber 与 index 相乘。同时,index 每次递减 1。这一步至关重要,否则程序将陷入无限循环。如果没有对迭代次数加以限制,迭代次数可能无限增长,直到程序耗尽内存。

初始时,index 的值为 targetNumber - 1。

下面我们通过手动模拟来跟踪变量的变化过程。


在下一节课中,我们将详细对比迭代与递归之间的主要差异。

递归基础

迭代与递归的区别