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

向大神写长城的诗学习。

时间: 2024-10-14 12:30:16

递归函数之阶乘和字符串反转-基于R和Python的相关文章

【51CTO学院三周年】编程成长感悟, 基于R,Python和JAVA

这是我自己编程技能提升途径的总结,主要有以下三点: 业务驱动,修炼技能 合作需求,扩展技能 个人兴趣,不为金钱,只为快乐和创造 最近刚入职两个月, 同样从事的是生物信息分析, 之所以从事当前这个行业, 原因在于读大学时几乎大多数的专家, 高级知识分子都提出"21世纪是生命科学的世纪", 于是当时读的是生物科学专业. 可是编程技能,在大学我掌握的只有C语言, 而且对于C语言的指针感到一片茫然, 当然这跟我当时读的专业几乎没有任何关系. 第一点: 我为什么要重新学一门语言-python 毕

字符串反转方法汇总

split()方法将一个字符串对象的每个字符拆出来,并且将每个字符串当成数组的每个元素 reverse()方法用来改变数组,将数组中的元素倒个序排列,第一个数组元素成为最后一个,最后一个变成第一个 join()方法将数组中的所有元素边接成一个字符串 来看个实例: 1 function reverseString(str) { 2 // 第一步,使用split()方法,返回一个新数组 3 // var splitString = "hello".split("");

[C/C++] String Reverse 字符串 反转

#include <iostream> #include <string> #include <algorithm> #include <cstring> inline void STL_Reverse(std::string& str) // 反转string字符串 包装STL的reverse() 可以inline { reverse(str.begin(), str.end()); // STL 反转函数 reverse() 的实现 /* tem

趣味算法:字符串反转的N种方法(转)

老赵在反对北大青鸟的随笔中提到了数组反转.这的确是一道非常基础的算法题,然而也是一道很不平常的算法题(也许所有的算法深究下去都会很不平常).因为我写着写着,就写出来8种方法……现在我们以字符串的反转为例,来介绍这几种方法并对它们的性能进行比较. 使用Array.Reverse方法 对于字符串反转,我们可以使用.NET类库自带的Array.Reverse方法 public static string ReverseByArray(this string original) { char[] c =

python字符串反转 高阶函数 @property与sorted(八)

(1)字符串反转 1倒序输出 s = 'abcde' print(s[::-1]) #输出: 'edcba' 2 列表reverse()操作 s = 'abcde' lt = list(s) lt.reverse() print(''.join(lt)) #输出: 'edcba' 3 二分法交换位置 s = 'abcde' lt = list(s) for i in range(len(l) // 2): lt[i], lt[-(i+1)] = lt[-(i+1)], lt[i] print('

中文分词实践(基于R语言)

背景:分析用户在世界杯期间讨论最多的话题. 思路:把用户关于世界杯的帖子拉下来,然后做中文分词+词频统计,最后将统计结果简单做个标签云,效果如下: 后续:中文分词是中文信息处理的基础,分词之后,其实还有特别多有趣的文本挖掘工作可以做,也是个知识发现的过程,以后有机会再学习下. ================================================== * 中文分词常用实现: 单机:R语言+Rwordseg分词包 (建议数据量<1G) 分布式:Hadoop+Smallse

字符串反转的进一步应用----单词反转

字符串反转:如给定一字符串 good bye boy. 反转之后: .yob eyb doog 实现思路: 分别从第一个字符和最后一个字符,同时向中间遍历,交换遇到的每一个字符.JAVA实现代码如下:字符数组str存储待反转的字符串. private static void inverse(char[] str, int start, int end){ int i = start; int j = end; while(i < j){ char tmp = str[i]; str[i] = s

Python 字符串前面加&#39;r&#39;

python中r的用法,r'str'表示raw string,既忽略转义字符.因为和windows不一样,python中认为\就是转义字符escape sequences的标志. 在python2.x中,unicode字符串需要在字符串前加u来表示,比如 str=u'汉字' 而在python3.x中,unicode字符串已经是默认格式,因此不再需要加u, 如果你加了u,会报语法错误: str=u'汉字' SyntaxError: invalid syntax Python 字符串前面加'r'

leetcoder系列001:c++字符串反转

问题: 给定一个输入字符串,字符串字反向词.例如 s = "the sky is blue",返回 "blue is sky the". 我的答案: class Solution { public: void reverseWords(string &s) { if(s.size() <= 0) return; string pattern = " "; string::size_type pos; vector<string