递归函数之阶乘和字符串反转-基于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 教你如何正确使用图表。

向大神学习。

原文地址:https://www.cnblogs.com/litao1105/p/4924407.html