递归使用的示例

时间:2011-08-07 15:44:59

标签: recursion

使用递归的例子是什么(只有很少的解释和/或代码示例)?

3 个答案:

答案 0 :(得分:3)

用途:解析;遍历;产生分形;某些形式的加密

例子:河内的塔; Fibonacci Seq;子集生成(有很多例子,如果你愿意,我可以为你编写一些这些例子吗?)

优点:简单;对于某些问题是直观的(例如Ackermann函数,遍历)

缺点:慢(尽管您可以使用堆栈实现任何递归解决方案);可能导致stackoverflow异常

如果有人想知道加密,这里是密码块链接模式的简短说明:

  

Chaining为分组密码添加了反馈机制。块是   首先加密,然后将它们的结果反馈到   加密下一个块。因此,每个块修改加密   下一个街区。

     

在CBC中,明文首先被加密,结果存储在   反馈登记。然后下一个明文与内容进行异或   登记册。这成为加密的下一个输入   常规。产生的加密存储在反馈寄存器中   再次和下一个明文是这样的。这个过程重复   直到消息结束。对于解密,解密块   通常并存储在反馈寄存器中 - 在下一个块之后   解密后,它与反馈寄存器的结果进行异或   等等。

[改编自Bruce Shneier的优秀书籍Applied Cryptography]

答案 1 :(得分:1)

任何类型的循环都可以表示为尾递归,它通常用在函数式语言中。建立/处理任何类型的递归数据结构,显然 - 树是一回事,但是例如列表也可以递归表示(因为head是元素,tail是其余的[另一个列表])。

答案 2 :(得分:1)

任何可以迭代解决的问题都可以递归地解决。我会质疑被问题的有效性,因为迭代地和递归地解决问题主要取决于具体情况。