递归函数之阶乘和字符串反转-基于R和Python
Python课第五周开始讲函数了。递归函数。递归在python中不能超过900多层,否则报错内存溢出什么的。同样在R中递归太深也会报错,阈值和python中大概一样,900多次就报错了。
error message:
错误: 评估嵌套太深:无穷递归/ options(expressions=)?
收捲时出错: 评估嵌套太深:无穷递归/ options(expressions=)?
基于Python
# 递归函数 阶乘 def fact(n): if n==0: return 1 else: return n*fact(n-1) # 递归翻转字符串 def reverse(s): if s=='': return s else: return reverse(s[1:])+s[0]
Python运行结果
fact(12) Out[9]: 479001600 reverse('hello world') Out[10]: 'dlrow olleh'
基于R
# 阶乘 fact <- function(n){ if(n==0) return(1) #基例在这 else return(n*fact(n-1)) } # 翻转字符串 reverse <- function(s){ if(s=='') return('') #基例在这 else return(paste0(reverse(substring(s,2)),substr(s,1,1))) }
R运行结果
> reverse('hello world') [1] "dlrow olleh" > fact(12) [1] 479001600
吐个槽:
不像R的IDE已经形成R studio一家独大的局面,Python 的IDE很多,都不怎么好用,现在用Anaconda。
Anaconda目前支持Mac OS X 10.7 -10.10,昨晚手残,升级了系统到OS X EI Capitan 10.11.1 (15B42),然后就傻逼了,Anaconda死活一直loading app list,不能成功加载app.今天上午人品爆发,spyder-app神奇的又能加载成功了。
一直是学习的Python3,想练练手爬个虫,结果又是一堆的坑。目前是到能把网页以文本形式打印出来这一步,目前还未找到和R rvest功能类似的方法,能直接深入到html_node取回自己想要的信息。
吐槽结束。
推荐一个python在线教程,博主是大神,Python2,Python3的教程都有,很全面。
The Data Visualisation Catalogue 教你如何正确使用图表。
向大神写长城的诗学习。