九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(1) f(x) = 2f(x-1) + x^2

一个无聊男人的疯狂数据结构学习(1) f(x) = 2f(x-1) + x^2

write by 九天雁翎(JTianLing) – www.jtianling.com

 

《数据结构与算法分析c++描述》 Mark Allen Weiss著 人民邮电大学出版 中文版第6面,图1-2,一个递归函数

C++:

书上已有实现。这里就不贴了,对于没有书的人来说,f(x) = 2f(x-1) + x * x的说明好像也足够了。

 

lua:

1 function f(x)  
 2     **if**  (x == 0)  
 3     **then**  
 4         **return**  0;  
 5     **else**  
 6         **return**  2 * f(x -1) + x * x;  
 7     **end**  
 8 end  
 9   
10 \-- Test code  
11 print(f(1))  
12 print(f(2))  
13 print(f(3))  
14 print(f(4))  
15       

python:

1 **def**  f(x):  
 2     'a easy recursive funtion'  
 3     **if**  x == 0:  
 4         **return**  0  
 5     **else** :  
 6         **return**  2 * f(x -1) + x * x  
 7   
 8   
 9 # test code  
10 **print**  f(1)  
11 **print**  f(2)  
12 **print**  f(3)  
13 **print**  f(4)  
14   

bash:

用bash写一个简单的递归竟然也这么难。。。。。。郁闷,这是过了两天自己后来补上的,最后因为vim的上色没有办法直接复制到word和这边,所以通过vim2html的转换后再贴过来:)效果很好啊。

1 #!/bin/bash  
 2   
 3 function f  
 4 {  
 5     **local**  number=**"** $1**"**  
 6     **if**  **[**  $number **=**  0 **]**  
 7     **then**  
 8         ret=0  
 9     **else**  
10         **let**  **"** decrnum = number - 1**"**  
11         f $decrnum  
12         **let**  **"** ret = $? * 2 + $1 * $1**"**  
13     **fi**  
14   
15     **return**  $ret  
16 }  
17   
18 **for**  i **in**  1 2 3 4  
19 **do**  
20     f i  
21     **echo**  $?  
22 **done**  
23   

补充说明一下,这次完全lua,python都是在windows中gvim完成,以后全部放到linux中完成。呵呵,其实作为脚本语言这样移植性非常好的语言来说,主要的区别仅仅是开始第一句linux会多句magic指示,以方便直接在shell中执行而已。主要的目的是以后的vim2html可以通过bash的脚本来一次完成,不需要在windows中通过这么多操作了。:)

write by 九天雁翎(JTianLing) – www.jtianling.com

分类:  C++  Lua  Python  算法 
标签:  Bash  C++  Lua  Python  《数据结构与算法分析-C++描述》 

Posted By 九天雁翎 at 九天雁翎的博客 on 2008年11月08日

前一篇: 一天一个C Run-Time Library 函数(8) assert 后一篇: 关于strcpy的问题,解释一下为什么VS中标准的方法不用memcpy实现