关于递归的非递归实现?
我有一个问题,就是对于递归问题,除了用栈来模拟以外,是不是可以用循环非递归来做呢?
你如汉诺塔>?
是不是可以用循环非递归来做呢>?>
问题点数:0、回复次数:11Top
1 楼zhuixe(竹子)回复于 2003-09-02 20:58:38 得分 0
可以,递规都可以用循环来实现,书上有例子Top
2 楼thisismq(关外的雪)回复于 2003-09-02 21:18:10 得分 0
请问那本书?
可以请教一下吗?
Top
3 楼neubird(带发修行的猪)回复于 2003-09-02 22:30:26 得分 0
不同意,不同意,并不是所有的递归都可以用循环来做的,只有尾递归才可以吧?
汉诺塔应该不可以用循环来做的。Top
4 楼icbm(雪狼)回复于 2003-09-02 23:42:53 得分 0
所有的递归程序都可以用非递归程序来实现。
清华大学版的《数据结构》里有很详细的做法,把递归程序改写成非递归程序。
主要思想就是自已建立一个栈,来处理函数的局部变量。
Top
5 楼lyff8neo(对不起,我对你忠诚,因为你是c++)回复于 2003-09-03 00:38:28 得分 0
都可以用栈来实现的打!
不过用循环就不一定了啊!Top
6 楼cnxiaohai(相声独一处(回归,为了编程,为了C,为了CSDN))回复于 2003-09-03 01:09:18 得分 0
汉诺塔
好像只能用的归Top
7 楼thisismq(关外的雪)回复于 2003-09-03 09:48:53 得分 0
什么递归可以称得上是尾递归呢???
比如:用递归调用实现n!和用循环实现n!就是一样。
Top
8 楼bestsmoke((嘿嘿))回复于 2003-09-03 12:27:21 得分 0
汉诺只能递归Top
9 楼csdn5211(不同)回复于 2003-09-03 15:07:24 得分 0
用循环当然可以,但是一定要用栈。Top
10 楼ZhangYv(迎着朝阳,走向地狱)回复于 2003-09-03 15:25:38 得分 0
http://expert.csdn.net/Expert/topic/2207/2207612.xml?temp=.6097528
程序结构上的递归算法和非递归算法。
利用模拟堆栈,是可以转换的。
数学逻辑上的递归算法和非递归算法。
有时候可以转化,但并不是都能相互转换的,比如双递归函数是不存在非递归的数学逻辑结构的。Top
11 楼fogeye(雾眼)回复于 2003-09-03 16:15:13 得分 0
解释一下什么情况下是双递归?Top




