答案 0 :(得分:3)
用途:解析;遍历;产生分形;某些形式的加密
例子:河内的塔; Fibonacci Seq;子集生成(有很多例子,如果你愿意,我可以为你编写一些这些例子吗?)
优点:简单;对于某些问题是直观的(例如Ackermann函数,遍历)
缺点:慢(尽管您可以使用堆栈实现任何递归解决方案);可能导致stackoverflow异常
如果有人想知道加密,这里是密码块链接模式的简短说明:
Chaining为分组密码添加了反馈机制。块是 首先加密,然后将它们的结果反馈到 加密下一个块。因此,每个块修改加密 下一个街区。
在CBC中,明文首先被加密,结果存储在 反馈登记。然后下一个明文与内容进行异或 登记册。这成为加密的下一个输入 常规。产生的加密存储在反馈寄存器中 再次和下一个明文是这样的。这个过程重复 直到消息结束。对于解密,解密块 通常并存储在反馈寄存器中 - 在下一个块之后 解密后,它与反馈寄存器的结果进行异或 等等。
[改编自Bruce Shneier的优秀书籍Applied Cryptography]
答案 1 :(得分:1)
任何类型的循环都可以表示为尾递归,它通常用在函数式语言中。建立/处理任何类型的递归数据结构,显然 - 树是一回事,但是例如列表也可以递归表示(因为head是元素,tail是其余的[另一个列表])。
答案 2 :(得分:1)
任何可以迭代解决的问题都可以递归地解决。我会质疑被问题的有效性,因为迭代地和递归地解决问题主要取决于具体情况。