数据结构(十一)——递归

数据结构(十一)——递归一、递归简介1、递归简介 递归是一种数学上分而自治的思想。 A、将原问题分解为规模较小的问题进行处理 分解后的问题与原问题类型完全相同,当规模较小。 通过小规模问题的解,能够轻易求得原生问题的解 B、问题的分解时有限的 当边界条件不能满足时,分解问题(继续递归) 当边界条件满足时,直...
摘要由CSDN通过智能技术生成

数据结构(十一)——递归

一、递归简介

1、递归简介

    递归是一种数学上分而自治的思想。
    A、将原问题分解为规模较小的问题进行处理
        分解后的问题与原问题类型完全相同,当规模较小。
        通过小规模问题的解,能够轻易求得原生问题的解
    B、问题的分解时有限的
        当边界条件不能满足时,分解问题(继续递归)
        当边界条件满足时,直接求解(递归结束)

2、递归模型

    递归模型的一般表示法:

数据结构(十一)——递归

二、递归的应用

    递归在程序设计中的应用
    递归函数:
        函数体中存在自我调用的函数
        递归函数必须有递归出口(边界条件)
        函数的无限递归将导致程序崩溃
        使用递归函数时不要陷入递归函数的执行细节,应首先建立递归模型和确立边界条件。

1、求和的递归实现

数据结构(十一)——递归

int sum(unsigned int n)
{
  int ret;
  if(n > 1)
  {
      ret = n + sum(n - 1);
  }
  else if(n == 1)
  {
      ret =  1;
  }
  return ret;
}

2、斐波那契数列的实现

数据结构(十一)——递归

unsigned int Fibonacci(unsigned int n)
{
  unsigned int ret ;
  if(2 < n)
  {
      ret = Fibonacci(n -1) + Fibonacci(n -2);
  }
  else if((n == 1) || (n == 2))
  {
      ret = 1;
  }
  return ret;
}

3、字符串长度的递归实现

数据结构(十一)——递归

int _strlen_(const char* s)
{
  int ret = 0;
  if(*s != '\0')
  {
      ret = 1 + _strlen_(s+1);
  }
  else
  {
      ret = 0;
  }
  return ret;
}
    代码简化:
unsigned int _strlen_(const char* s)
{
  return s?((*s)?(1 + _strlen_(s + 1)):0):0
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值