当前位置:   article > 正文

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

数据结构:完成将n个数的求和函数sum改造成递归函数实现

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

一、递归简介

1、递归简介

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

2、递归模型

    递归模型的一般表示法:

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

二、递归的应用

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

1、求和的递归实现

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

  1. int sum(unsigned int n)
  2. {
  3. int ret;
  4. if(n > 1)
  5. {
  6. ret = n + sum(n - 1);
  7. }
  8. else if(n == 1)
  9. {
  10. ret = 1;
  11. }
  12. return ret;
  13. }

2、斐波那契数列的实现

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

  1. unsigned int Fibonacci(unsigned int n)
  2. {
  3. unsigned int ret ;
  4. if(2 < n)
  5. {
  6. ret = Fibonacci(n -1) + Fibonacci(n -2);
  7. }
  8. else if((n == 1) || (n == 2))
  9. {
  10. ret = 1;
  11. }
  12. return ret;
  13. }

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

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

  1. int _strlen_(const char* s)
  2. {
  3. int ret = 0;
  4. if(*s != '\0')
  5. {
  6. ret = 1 + _strlen_(s+1);
  7. }
  8. else
  9. {
  10. ret = 0;
  11. }
  12. return ret;
  13. }
    代码简化:
  1. unsigned int _strlen_(const char* s)
  2. {
  3. return s?((*s)?(1 + _strlen_(s + 1)):0):0
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/916626
推荐阅读
相关标签
  

闽ICP备14008679号