李荣浩像周杰伦:求助:是关于PASCAL 递归的~

来源:百度文库 编辑:高考问答 时间:2024/04/29 09:38:38
今天刚学递归,但是老是理解不了~特别是汉若塔的那个~我理解不了他算法是怎么得出来的~可以的话请尽量详细点~
最好能顺便说一下4个柱的汉若塔~
呵呵~~

递归的主要模式是自己调用自己,进入无限的循环中,在特定的条件下跳出以避免死循环,典型的递归有深度优先搜索、斐波那契数列等。
hanoi因为题目本身的限制,递归并不是很容易理解,建议先学习了上述目标明确的程序后再来研究。
另外,遇到难懂的程序最好背下来,才能更好的理解。

其实非常简单,递归就是不断地调用自身,以求得最终的结果,不到目的不会退出循环.举个例子

function aa(a:integer)
begin
a=a-1;
if a>0 then a:=aa(a) else aa:=-1;
end;
注意,递归肯定是一个函数.
在主程序中,有一个调用语句a:=100;
a:=aa(a);
那么,最终,经过100次左右的递归,a会最终被返回一个-1的值出来.

function aa(a:integer)
begin
a=a-1;
if a>0 then a:=aa(a) else aa:=-1;
end;
注意,递归肯定是一个函数.
在主程序中,有一个调用语句a:=100;
a:=aa(a);
那么,最终,经过100次左右的递归,a会最终被返回一个-1的值出来

递归的主要模式是自己调用自己,进入无限的循环中,在特定的条件下跳出以避免死循环,典型的递归有深度优先搜索、斐波那契数列等。
hanoi因为题目本身的限制,递归并不是很容易理解,建议先学习了上述目标明确的程序后再来研究。
另外,遇到难懂的程序最好背下来,才能更好的理解。

这个可以看一个演示程序,要我来说,肯定也是按照课本讲呢~