递归的概念
一个函数、过程、概念或数据结构,如果在其定义或说明内部直接或间接地出现有其本身的引用,或者是为了描述问题的某一状态,必须用到它的上一状态,而描述上一状态,又必须用到它的上一状态……这种用自己来定义的方法,称之为递归或者递归定义。
在程序设计中,过程或函数直接或者间接调用自己,就称为递归调用
递归过程实际上借助于一个递归工作栈来实现的。
首先问题向一个方向一步一步分解,既问题规模逐渐降低,这样,问题向一极推进的过程称之为递归过程;
然后这些问题又按后提出先解决的顺序依次得到解决,最后得到原问题的解。这样,在子问题得到逐一解决的基础上,最后回到原问题的解的变化过程,称之为回归过程。
递归定义的要素
1、递归边界或终止条件。
2、递归定义,使问题向边界条件转化的规则。
var
n:integer;
function fibonacci(x:integer):integer;
begin
if (x=0) or (x=1) then exit(1);
exit(fibonacci(x-1)+fibonacci(x-2));
end;
begin
readln(n);
writeln(fibonacci(n));
end.
集合的划分