用多了自定义函数,
大家也就懂得如何灵活运用递归了.

的确,递归是一个很好的方法,
对代码质量的提高和运行的效率都有很大的支持.

有一个缺点就是耗用堆栈比较多,
每递归调用一次,
就得暂存压栈数据一次,
包括变量值,运行状态,暂停恢复地址等等状态性数值.
默认的堆栈空间好像只有3K的,好可怜.
一个数据最大都可以大到64K去了,
在我的电脑里,用
STACK STACK
堆栈值最大可以设置到47K,
记得很久之前我用递归来排序(就是那个什么快速分界什么的)
结果经常递归不到40次就溢出了.

后来没办法,就想到用文件来操作,用文件内容来代替变量储存调用
但文件操作速度较慢,我又转用虚拟盘(内存虚拟磁盘)
再后来我就用数组来代替递归了.
原理很简单,用数组来取代你调用过程中需要保存的变量值就可以了.

最简单的递归莫过于求从1到某个数的和了.

n=100
print sums(n)

function sums(a)
sums=a+sums(a-1)
end function

在这个递归调用的过程中,
保存的只有a这个值,个数是a个.
(如果不能确定递归的次数怎么办?
   记住数组最大容量是64K就行了)

n=100
dim a(n)
do
  if s=0 then
    a(i)=n
    i=i+1
    n=n-1
    if n=1 then s=s+n
  else
    i=i-1
    s=s+a(i)
  end if
loop
print s

大家一看上去可能会觉得我是把简单的问题复杂化了,
本来一两句的东西怎么变那么繁琐了.

有兴趣的可以看看我在[url=http://www.programfan.com/club/showbbs.asp?id=72272]马踏棋盘[/url]里面写的东西,
当然,肯定比不上ftw用递归做的深搜架构
那可是高级高效的理论.
唯一的好处就是能扩大计算的范围,
付出的代价就是繁复的转换变量.
代码效率看上去也降低了.