编程基础/递归与迭代
外观
< 编程基础
介绍递归,并使用循环作为重复算法解决方案的替代方法。包括用于计算阶乘的 C++ 编程代码。
"一般来说,编写重复算法有两种方法。一种使用循环;另一种使用递归。递归是一种重复过程,其中一个函数调用自身。两种方法都提供重复性,并且可以互相转换。"[1] 迭代是控制结构的类别之一。它允许零到多次处理某些操作。迭代也被称为循环和重复。数学术语“迭代”是指执行循环语句部分。许多问题/任务需要使用重复算法。在大多数编程语言中,这可以通过以下两种方式实现:
- 循环控制结构,特别是 for 循环(迭代方法)
- 递归调用函数
在许多数学相关的問題中,重复算法作为解决方案方法出现。包括阶乘、斐波那契数列和汉诺塔问题。这些问题的解决方案通常只以递归方法的形式呈现。然而,“... 您应该了解递归的两个主要限制。首先,递归解决方案可能涉及大量开销,因为它们使用函数调用。其次,每次调用都会消耗一些内存分配。如果递归很深 - 也就是说,如果存在大量递归调用 - 那么您可能会耗尽内存。阶乘和斐波那契数列的解决方案都最好用迭代的方式来开发。"[2]
了解递归或迭代方法的工作原理将留给其他人。它们通常作为数据结构学习的一部分被详细介绍。我们介绍它们的目的是
- 为您提供递归的定义
- 介绍迭代的替代解决方案方法
以下示例程序展示了 8! (八阶乘)的两种解决方案。
根据您的编译器/IDE,您应该决定在哪里下载和存储源代码文件以进行处理。谨慎起见,您应该在下载源代码文件之前根据需要创建这些文件夹。Bloodshed Dev-C++ 5 编译器/IDE 的建议子文件夹名称为:
- Demo_Programs
如果您还没有这样做,请根据需要创建文件夹和/或子文件夹。
将以下文件下载到您的存储设备中的相应文件夹中。按照您的编译器/IDE 的方法,编译并运行程序。结合其他学习资料学习源代码文件。
从 Connexions 下载:Demo_Factorial.cpp
- 递归
- 一个重复的过程,其中一个函数调用自身。
- 阶乘
- 一个经常使用递归解决的数学问题。