我正在尝试在Haskell中练习一些递归函数。以下随机函数显示了一些不同形式的递归和迭代。我在理解哪种形式的递归或迭代连接到函数时遇到问题。我知道递归形式包括尾递归,线性递归和树递归以及常规迭代。有什么策略可以分配我知道的每个功能的四种不同形式之一?
$ mn create-controller Book
| Rendered template Controller.java to destination src/main/java/example/BookController.java
| Rendered template ControllerTest.java to destination src/test/java/example/BookControllerTest.java
答案 0 :(得分:2)
该策略是查看如何使用每个递归调用的返回值:
f1
中,返回值本身会立即返回f2
中,单个递归调用的返回值用于计算原始调用的返回值。f3
和f4
中,多个递归调用的返回值用于计算原始调用的返回值。(我认为您需要对f3
进行递归调用以计算另一个递归调用的参数这一事实不会影响您所要求的任何分类制作。)