递归主方法
递归的主要方法是什么?一、递归算法 递归算法(英语:recursion algorithm)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。计算理论可以证明递归的作用可以完全取代循环,因此在很多函数编程语言(如Scheme)中习惯用递归来实现循环。二、递归程序在支持自调的编程语言中,递归可以通过简单的函数调用来完成,如计算阶乘的程序在数学上可以定义为:这一程序在Scheme语言中可以写作:1(define (factorial n) (if (= n 0) 1 (* n (factorial (- n 1)))))不动点组合子即使一个编程语言不支持自调用,如果在这语言中函数是第一类对象(即可以在运行期创建并作为变量处理),递归可以通过不动点组合子(英语:Fixed-point combinator)来产生。以下Scheme程序没有用到自调用,但是利用了一个叫做Z 算子(英语:Z combinator)的不动点组合子,因此同样能达到递归的目的。1(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))))))))这一程序思路是,既然在这里函数不能调用其自身,我们可以用 Z 组合子应用(application)这个函数后得到的函数再应用需计算的参数。尾部递归尾部递归是指递归函数在调用自身后直接传回其值,而不对其再加运算。尾部递归与循环是等价的,而且在一些语言(如Scheme中)可以被优化为循环指令。 因此,在这些语言中尾部递归不会占用调用堆栈空间。以下Scheme程序同样计算一个数字的阶乘,但是使用尾部递归: 1(define (factorial n) (define (iter product counter) (if (> counter n) product (iter (* counter product) (+ counter 1)))) (iter 1 1))三、能够解决的问题数据的定义是按递归定义的。如Fibonacci函数。问题解法按递归算法实现。如Hanoi问题。数据的结构形式是按递归定义的。如二叉树、广义表等。 四、递归数据数据类型可以通过递归来进行定义,比如一个简单的递归定义为自然数的定义:“一个自然数或等于0,或等于另一个自然数加上1”。Haskell中可以定义链表为:1data ListOfStrings = EmptyList | Cons String ListOfStrings这一定义相当于宣告“一个链表或是空串列,或是一个链表之前加上一个字符串”。可以看出所有链表都可以通过这一递归定义来达到。
文章标签:
来自:递归
本文链接:https://www.u1e.cn/baike/a/fa39b5b5e03069be7d11c036 [复制]
猜你喜欢
Teacher, engineer of human soul, who won't praise you!
心香三炷达苍冥,祈愿尘寰六合清。更愿佛光常注照,诸方好运享安宁!给您拜年了,祈愿您新年胜因善缘,吉祥安康!
寂寂闻猿愁,行行见云收。——李白《寻高凤石门山中元丹丘》
家声中垒也称贤,喜气临门敞绮筵,双璧联辉夸美眷,六葭应节缔良缘;女如五彩云犹丽,郎却斯文德自妍,恐负嘉招先作贺,诗题汤饼约明年。
不图虚名,不慕奢华。
不管发生什么,你都不要放弃,肯定会有意想不到的风景。也许不是你本来想走的路,可是另一条路有另一条路的风景,不要念念不忘原来的路,在这里你会遇到难忘的更好的风景。
在遥远的城市,陌生的地方,有他未曾见过的山和海。
俗话说:一百种人有一百种命运,有的人可以一条路一直走到底,有的人却注定要曲曲折折,不过谁也不需要羡慕谁。最重要的是:我们迟早会遇上。
人总要找点事情做,让自己忙起来,忙起来才知道生活不易,才明白平时的忧伤都是矫情。
等一阵风,等一阵雨,等一个唯一的你。
你们给我挺住,都别吃,都那么肥了怎么还有脸吃。
如果不醒来,那么现实和梦境又有何分别。
天塌下来你顶着,我垫着!
最美的不是下雨天,是陪你一起躲过的屋檐。
南音少女
如果坚强的人落泪了,一定是撑不下去了。
您是一棵大树,春天倚着您幻想,夏天倚着你繁茂,秋天倚着您成熟,冬天倚着您沉思。亲爱的妈妈,感谢给予我的一切。
暗恋你,追你,我的本子满满写着你的名字。
得意时处之泰然,失意时处之淡然,才是人生的大智慧。
不必因昨天的眼泪、湿了今天的太阳。
歇后语大全
宰鹌鹑也要请屠夫操刀是什么意思?
杂耍班子走江湖是什么意思?
鸳鸯一对儿是什么意思?
玉石烟袋是什么意思?
玉米地里带绿豆是什么意思?
鞋壳篓里跑马是什么意思?
瞎子放牛是什么意思?
西瓜落地是什么意思?
围棋盘里下象棋是什么意思?
跳蚤戴串铃是什么意思?
提着扁担串门子是什么意思?
上嘴唇顶天,下嘴唇挨地是什么意思?
三月里扇扇子是什么意思?
鸟铳(ni是什么意思?
暖水瓶里装开水是什么意思?
脑袋成了葫芦是什么意思?
蒙在被子里放屁是什么意思?
蚂蚁搬虫子是什么意思?
盲人捂耳朵是什么意思?
离枝的鲜花是什么意思?
两副重担一肩挑是什么意思?
老猫偷食狗挨打是什么意思?
俩狗打架是什么意思?
老寡妇遇见老绝户是什么意思?
扛着救生圈过河是什么意思?
奸狼下了个贼狐狸是什么意思?
驾驶员罢工是什么意思?
花瓶里栽树是什么意思?
耗子窟窿是什么意思?
海风阵阵是什么意思?
狗熊拜年是什么意思?
狗吃青草是什么意思?
二大娘抱秃娃娃是什么意思?
对着王八批乌龟是什么意思?
豆腐做门墩是什么意思?
豆豉(chi)口袋是什么意思?
洞庭湖吹喇叭是什么意思?
灯草做琴弦是什么意思?
戴着帽子亲嘴是什么意思?
带刺的鲜花是什么意思?
大月光夜里打电筒是什么意思?
大姑娘肿脸是什么意思?
大姑娘当媒人是什么意思?
打蛇打到七寸上是什么意思?
醋坛里酿酒是什么意思?
春苗得雨是什么意思?
吃口樱桃肉塞了嗓子眼是什么意思?
长颈鹿脖子仙鹤腿是什么意思?
财神爷放帐是什么意思?
膀子折断了往袖里塞是什么意思?
相关推荐
还没有人回应过