• 技术文章 >常见问题

    一个递归算法必须包括什么

    (*-*)浩(*-*)浩2019-12-11 10:51:09原创3649
    递归算法(英语:recursion algorithm)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。

    递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。

    绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。(推荐学习:web前端视频教程

    计算理论可以证明递归的作用可以完全取代循环,因此在很多函数编程语言(如Scheme)中习惯用递归来实现循环。

    递归程序

    在支持自调用的编程语言中,递归可以通过简单的函数调用来完成,如计算阶乘的程序在数学上可以定义为:

    这一程序在Scheme语言中可以写作:

    (define (factorial n)  (if (= n 0)      1      (* n (factorial (- n 1)))))

    不动点组合子

    即使一个编程语言不支持自调用,如果在这语言中函数是第一类对象(即可以在运行期创建并作为变量处理),递归可以通过不动点组合子(英语:Fixed-point combinator)来产生。

    以下Scheme程序没有用到自调用,但是利用了一个叫做Z 算子(英语:Z combinator)的不动点组合子,因此同样能达到递归的目的。

    (define Z  (lambda (f)    ((lambda (recur) (f (lambda arg (apply (recur recur) arg))))     (lambda (recur) (f (lambda arg (apply (recur recur) arg)))))))(define fact  (Z (lambda (f)       (lambda (n)         (if (<= n 0)             1             (* n (f (- n 1))))))))

    以上就是一个递归算法必须包括什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:算法
    上一篇:如何调到aux模式 下一篇:cpu的控制总线提供什么
    线上培训班

    相关文章推荐

    • php基础算法有哪几种• 二叉树的遍历算法• php用不了推荐算法吗• nginx的负载均衡算法有哪些

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网