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