问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

scheme递归的优势在哪

发布网友 发布时间:2022-04-19 01:08

我来回答

2个回答

热心网友 时间:2022-04-19 02:37

python根本就没有尾递归,scheme却有,所以scheme更有效率
尾递归的优势,是可以迭代,程序消耗的内存基本是恒定的
据我所知,尾递归不是大部分语言拥有的特性,C语言和lisp都用,连C++都没有,遑论其他语言了
chezscheme有很多优化选项,没开的话哪有优势?
尾递归,就是scheme相比python的一个绝对优势

热心网友 时间:2022-04-19 03:55

测试对象是经典的斐波拉契数列.

非尾递归形式:

scheme代码:

(define (fib n)
(if (or (= n 2)(= n 1))
1
(+ (fib (- n 1)) (fib (- n 2)))))

Python代码:

def fib(n):
if n==1 or n==2:
return 1
else:
return fib(n-1)+fib(n-2)

取n=40,实测结果:

scheme要等大概30秒才返回结果.( chez 和racket两个平台都差不多,chez略快)
Python慢些,要1分钟的样子.

n=100是不要想了.scheme和Python半天都算不出.我直接强制中断,没有测试.

我非常失望啊!!!

我的疑问是:

1.虽然比Python快,但是scheme仍然慢啊,看不出什么实质优势.
因为我之前看一些文章说递归和scheme联系非常密切,既然如此,在这一块上,scheme要有拿得出手的优势啊..为什么这么简单的一个n=100就让它吃不消了?这个测试的消耗时间上,它和Python有什么本质区别?退50步和退100步吗?

2.对于斐波拉契这种,scheme一定要转换成尾递归才算得快吗?

scheme:
(define (fib n fir sec)
(if (< n 3)
sec
(fib (- n 1) sec (+ fir sec))))

Python:
def fib(n,a=1,b=1):
if n>2:
return fib(n-1,b,a+b)
return b

如果是这样,那么它和Python有啥区别呢?比如对于n=900,大家都算得快了啊..都是1秒内返回结果....

我只发现了一个scheme的优势

(1)python无法处理n>996的情况(奇怪的是,996的时候Python仍然是算得非常快的,实在不知道为什么997就一下子罢工了)

(2)schme没有这种*,n=100000都只需要10几秒就完成了.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人大政协辅助岗是什么 政务辅助人员是干什么 政府辅助人员是什么 努比亚的海拔什么意思 北非努比亚现在怎么样了啊 相邻权的相关法律 梦见老公离世了什么预兆 梦见自己老公走掉 你出轨后 怎么操作才没被发现? 评评怎么造句 dnf亚蒙谎言之力怎么获得 去云南旅游买的水果,跪求名字和吃法 玫瑰花能烧掉吗?(能燃吗?) 玫瑰花可以点燃吗 dnf传说物品怎么得 DNF85级怎么能捡到7.77.777.1777金币 大冶市事业编是县制单位吗? 40岁的女人140斤,这种情况下是否需要减肥? dnf守护神的金币怎么得 2012年湖北省大冶市事业单位考试的面试名单什么时候出来啊 女人过了四十岁减肥为什么就会很困难,有什么方法对减肥有用? 大冶市事业单位考试 通过了笔试面试 上交了档案 人事代理费 个人表现材料等 今天体了检 2015黄石大冶事业单位考试教师岗的笔试课程有吗? 一个家庭儿孓不幸身体不能自理儿媳妇有没有管婆婆的义务? 我的儿媳妇结婚九年了一直不做饭只吃饭吃完饭也不洗碗筷就走孙子我一直是我带大的最近我身体不好她也不干 我支付宝被骗了,如何投诉对方支付宝账户 你儿媳结婚3年未生娃,是不是身体有问题? 儿媳该不该给生活不能自理的婆婆擦身体、端屎端尿呢? 儿子给妈妈擦身体,儿媳妇儿什么心情 儿媳妇不让家婆吃饭把家婆的饭倒掉气死老人该受到怎么样的惩罚 苹果和玫瑰花能煮吗? 朋友生前最喜欢玫瑰花,烧五七时可以买红色玫瑰鲜花去祭拜吗? 我姓舒女生 五行缺金,求带金字旁的名字 吃了鲫鱼能吃百香果吗 求推荐使用手机相册软件 百香果柠檬鱼和豆苗可以一起煮吗? 玫瑰花可以用来煮饭吗 目前有一个电机为4 6 级双速电机,现在要接6级如何接线 54槽4/6极双速电机接线图 双速36槽4一6极电机接线图 36槽4&#47;6极双速电机接线展开图。绕组分布;23211111,,23211111,23211111_百度问一问 48槽4/6双速电机接线图 化成工序的目的是什么 54槽4、6极双速电机接线图 生产电池的化成工艺属于有毒有害么 15千瓦4/6级电动机怎么接线啊 化成工艺是什么意思 36槽4/6极3Y/4Y双速电动机绕组接线图 两速三相异步电动机4-6级的接法 4/6极双速电机的接线图