递归和递推

本文介绍了递归的概念,通过递归定义和递归调用来阐述其工作原理,并展示了Fibonacci数列的递归实现。接着讨论了集合划分问题,给出递归公式并分析了边界条件。还提到了递归转化为非递归的需求以及递推方法,提供了递推算法的基本框架。最后给出了实例代码,帮助理解递归和递推的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

递归的概念

一个函数、过程、概念或数据结构,如果在其定义或说明内部直接或间接地出现有其本身的引用,或者是为了描述问题的某一状态,必须用到它的上一状态,而描述上一状态,又必须用到它的上一状态……这种用自己来定义的方法,称之为递归或者递归定义。
在程序设计中,过程或函数直接或者间接调用自己,就称为递归调用

递归过程实际上借助于一个递归工作栈来实现的。
首先问题向一个方向一步一步分解,既问题规模逐渐降低,这样,问题向一极推进的过程称之为递归过程;
然后这些问题又按后提出先解决的顺序依次得到解决,最后得到原问题的解。这样,在子问题得到逐一解决的基础上,最后回到原问题的解的变化过程,称之为回归过程。

递归定义的要素

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);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值