数据结构中的迭代是什么?2024年8月28日 | 阅读 22 分钟 迭代是指**连续重复一定数量的步骤**,直到满足某个特定条件为止。迭代的次数可以是有限的,也可以是无限的。这完全取决于我们执行迭代的程序。 迭代在执行相同指令和重复相同的代码行方面起着非常重要的作用。有时,迭代是没有价值的,当条件陷入无限循环时,会产生死锁。
打印 "Hello world" 10 次的程序上述程序的输出 Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! 上述程序的输出 Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! 当我们分析上述案例时,我们很容易就能了解迭代在程序中的重要性,以及它如何减少编码员的额外工作。它最终节省了时间,并使代码更高效、更易读。 在程序中执行迭代的方法在任何程序中执行迭代的各种方法如下: 1. 使用程序中的各种循环
2. 使用递归让我们结合示例,逐一详细讨论这些方法。这里我们参考 C 和 C++ 语言。 在程序中使用各种类型的循环执行迭代 1. 使用程序中的各种循环1. 使用 For 循环 在 C 和 C++ 语言中实现 for 循环非常简单,其基本语法如下: 在 expression 1 中,我们将在此处初始化变量,并且可以进行多个初始化。 在 expression 2 中,我们将编写条件表达式,循环将在此处运行。 在 expression 3 中,我们将根据条件和程序员的需求执行增量和减量操作。 实现 'for' 循环的特定过程。首先,expression 1,即变量初始化,将运行,变量将根据 for 循环中提到的语句进行初始化。初始化后,将执行 expression 2,即进行条件检查,如果满足条件,则指针将直接跳转到循环内部并执行循环内部提到的语句数量,执行语句后,指针将跳转到 expression 3 并对变量执行**增量**或**减量**操作,然后它将跳转到 expression 2 并再次检查条件,如果为真。指针将移出块。它将跳转到循环内部并执行循环内部提到的语句数量,然后指针再次移动到 expression 3,对变量执行增量或减量操作。之后,它将检查条件……整个过程将重复,直到条件变为假。 在 for 循环的工作中,我们可以观察到 expression 1,即变量初始化,只在开始时执行一次,之后指针将永远不会跳转到初始化部分。它将在 expression 2 和 expression 3 以及循环内部围绕,直到条件变为假。 让我们结合示例来理解 for 循环的工作原理。 上述程序的输出 Value of i is: 1 Value of i is: 2 Value of i is: 3 Value of i is: 4 Value of i is: 5 Value of i is: 6 Value of i is: 7 Value of i is: 8 Value of i is: 9 Value of i is: 10 上述程序的输出 Enter terms of fibonacci series 20 Fibonacci series is : 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 0.000000 secs 2. 使用 While 循环 在 C/C++ 语言中 while 循环的工作原理与 C/C++ 语言中 for 循环的工作原理相同。while 循环的语法与 for 循环有很大不同,语法如下: 在 expression 1 中,我们将在此处初始化变量,并且可以进行多个初始化。 在 expression 2 中,我们将编写条件表达式,循环将在此处运行。 在 expression 3 中,我们将根据条件和程序员的需求执行增量和减量操作。 实现 while 循环的特定过程。首先,expression 1,即变量初始化,将运行,变量将根据 while 循环中提到的语句进行初始化。初始化后,将执行 expression 2,即进行条件检查,如果满足条件,则指针将直接跳转到循环内部并执行循环内部提到的语句数量,执行语句后,指针将跳转到 expression 3 并对变量执行增量或减量操作。它将跳转到 expression 2 并再次检查条件,如果为真。指针将移出块。它将跳转到循环内部并执行循环内部提到的语句数量,然后指针再次移动到 expression 3,对变量执行增量或减量操作。之后,它将检查条件……整个过程将重复,直到条件变为假。 正如我们所观察到的,for 循环和 while 循环的工作过程是相同的;在 for 循环中,初始化语句仅执行一次,同样,在此 while 循环中,初始化语句在进入 while 循环块之前执行一次。 让我们结合示例来理解它。 上述程序的输出 Value of i is: 1 Value of i is: 2 Value of i is: 3 Value of i is: 4 Value of i is: 5 Value of i is: 6 Value of i is: 7 Value of i is: 8 Value of i is: 9 Value of i is: 10 上述程序的输出 Enter terms of fibonacci series 20 Fibonacci series is : 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 0.000000 secs 3. 使用 do-while 循环 使用 do-while 循环的过程与我们在 for 循环和 while 循环中遵循的过程不同。正如我们已经看到 while 循环和 for 循环的工作原理一样,在这两个循环中,我们首先初始化变量的值,检查条件,然后进入循环块。但是在这里的 do-while 循环中,过程与上述两种过程完全不同;在这个循环中,我们将首先初始化变量的值,然后我们将直接进入循环而无需检查任何条件,执行 do-while 块中提到的语句数量。我们将根据条件通过增量或减量来更新变量的值,然后最终我们将检查条件。 do-while 循环的语法如下: 在 expression 1 中,我们将在此处初始化变量,并且可以进行多个初始化。 在 expression 2 中,我们将根据条件和程序员的需求执行增量和减量操作。 在 expression 3 中,我们将编写条件表达式,循环将在此处运行。 do-while 循环的实现过程如下:首先 expression 1,即变量初始化,将运行,变量将根据 do-while 循环中提到的语句进行初始化。初始化后,指针将直接跳转到循环内部并执行循环内部提到的语句数量;执行语句后,指针将跳转到 expression 2,即指针将对变量执行增量或减量操作,之后它将跳转到 expression 3,即检查根据程序员需求提到的条件,一旦条件满足,指针将再次重复相同的过程,直接跳转到循环内部并执行循环内部提到的语句数量。指针再次移动到 expression 2,对变量执行增量或减量操作,然后检查条件……整个过程将重复,直到条件变为假。指针将移出块。 正如我们所观察到的,for 循环和 while 循环的工作过程是相同的;在 for 循环中,初始化语句仅执行一次,同样,在此 while 循环中,初始化语句在进入 while 循环块之前执行一次。 让我们结合示例来理解它。 上述程序的输出 Value of i is: 1 Value of i is: 2 Value of i is: 3 Value of i is: 4 Value of i is: 5 Value of i is: 6 Value of i is: 7 Value of i is: 8 Value of i is: 9 Value of i is: 10 上述程序的输出 Enter terms of fibonacci series 20 Fibonacci series is : 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 0.000000 secs ii. 使用递归迭代可以使用递归轻松执行,而递归这个词本身并没有什么特别之处。它只是指一个函数反复调用自身,直到遇到假语句为止。递归函数不一定总是从 main 函数调用,它也可以从其他函数调用,并且在调用递归函数时可以看到各种变化。有时,当函数调用自身陷入无限循环(因为没有条件成功满足,它无法停止调用自身)时,这种递归也称为无限递归。 我们没有递归的特定语法,但下面提到了递归发生的一些情况。 情况 1:当我们通过单级递归调用从 main 函数调用任何函数时 在上述情况下,如果我们观察到我们有 main 函数,并且在 main 函数体之前,函数 Fun 已被声明,这样它就不会产生任何错误。从 main 函数,我们通过传递实际参数调用了 Fun 函数;函数调用后将直接移动到 Fun 函数并开始执行 Fun 的主体,在 Fun 函数中,我们有形式参数,在 Fun 函数的主体中作为临时有效值。在 Fun 函数中,如果我们注意到我们有一些 if 条件,并且在 if 条件中,我们有一些语句需要逐一执行,如果条件被证明为真。一旦条件变为真,Fun 将停止调用自身;否则,它将移向另一个条件并开始调用自身,直到遇到假条件并打破迭代。一旦 Fun 停止调用自身,指针将移入 main 函数并开始执行 main 函数之后的代码,直到执行完整个 main 函数。 情况 2:当我们通过多级递归调用从 main 函数调用任何函数时 在上述情况下,如果我们观察到我们有 main 函数,并且在 main 函数体之前,函数 **Fun1** 和 **Fun2** 已被声明,这样它就不会产生任何错误。从 main 函数,我们通过传递实际参数调用了 Fun1 函数;函数调用后将直接移动到 Fun1 函数并开始执行 Fun1 的主体,在 Fun1 函数中,我们有形式参数,在 Fun1 函数的主体中作为临时有效值。在 Fun1 函数中,如果我们注意到我们有一些 if 条件,并且在 if 条件中,我们有一些语句需要逐一执行,如果条件被证明为真。在语句数量之间,我们有一些 Fun2 函数的调用;调用 Fun2 函数后,指针将直接跳转到 Fun2 函数的主体。在 Fun2 函数中,我们有相同的过程,有一个 if 条件和 else 部分;如果 if 条件为真,那么它将停止调用自身;否则,它将反复调用自身,直到条件变为假。一旦条件为假,指针将回到它离开的位置,并在 Fun1 函数中执行剩余的语句。一旦条件为真,Fun1 将停止调用自身;否则,它将移向另一个条件并开始调用自身,直到条件变为假。一旦 Fun1 停止调用自身,指针将移入 main 函数并开始执行其后的 main 函数,直到执行完整个 main 函数。 从以上两种情况,我们分析了递归函数的工作原理以及递归过程是如何在后台执行的。它们都通过**堆栈**来执行;当前调用逐一推入堆栈,如果执行完成则从堆栈中弹出。弹出是基于**LIFO 原理**进行的;最近调用的函数将首先执行并首先被弹出;同样,在此,整个过程都会进行。main 函数首先被推入堆栈,最后,它将从堆栈中弹出,这意味着程序成功完成。 情况 3:当我们通过单级递归调用从其他函数调用任何函数时 在上述情况下,如果我们观察到我们有 main 函数,并且在 main 函数体之前,函数 Fun 已被声明,这样它就不会产生任何错误。从 main 函数,我们通过传递实际参数调用了 Fun 函数;函数调用后将直接移动到 Fun 函数并开始执行 Fun 的主体,在 Fun 函数中,我们有形式参数,在 Fun 函数的主体中作为临时有效值。当我们进入 Fun 函数时,我们将调用 New 函数,然后指针将跳转到 New 函数的主体。在 New 函数中,如果我们注意到我们有一些 if 条件,并且在 if 条件中,我们有一些语句需要逐一执行,如果条件被证明为真。一旦条件变为真,New 将停止调用自身;否则,它将移向另一个条件并开始调用自身,直到遇到假条件并打破迭代。一旦 New 停止调用自身,指针将移入 Fun 函数,然后在其完成后,指针将指向 main 函数的主体并开始执行其后的 main 函数,直到执行完整个 main 函数。函数调用的回溯是在调用函数时实现的。 让我们结合示例来理解它。 上述程序的输出 Value of i is: 1 Value of i is: 2 Value of i is: 3 Value of i is: 4 Value of i is: 5 Value of i is: 6 Value of i is: 7 Value of i is: 8 Value of i is: 9 Value of i is: 10 上述程序的输出 Enter terms of fibonacci series 20 Fibonacci series is : 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 上述程序的输出 Enter the size of an array: 10 Enter Array 12 13 15 8 7 9 6 11 10 4 Enter the value to search: 7 Value present at index: 4 上述程序的输出 Enter the size of the array 12 Enter Array 14 12 7 8 9 11 3 1 10 5 18 13 Enter a value for search: 11 Value present at index: 5 下一个主题数据结构中的线性搜索和二分搜索是什么 |
我们请求您订阅我们的新闻通讯以获取最新更新。