zoukankan      html  css  js  c++  java
  • 递归函数分析

    递归的数学思想

    • 递归是一种数学上分而自治的思想

    • 递归需要有边界条件

      • 当边界条件不满足时,递归继续进行
      • 当边界条件满足时,递归停止
    • 递归将大型复杂问题转化为与原问题相同但规模较小的问题进行处理

    递归函数

    • 函数体内部可以调用自己
    • 递归函数
      • 函数体中存在自我调用的函数
    • 递归函数是递归的数学思想在程序设计中的应用
      • 递归函数必须有递归出口
      • 函数的无线递归将导致程序栈溢出而崩溃

    递归函数设计技巧

    递归模型的一般表示法

    n是问题规模,f是解决方法

    递归函数设计示例一

    用递归的方法编写函数求字符串长度

    例子1:递归版strlen

    #include <stdio.h>  
      
    int strlen_r(const char* s)  
    {  
        if( *s )  
        {  
            return 1 + strlen_r(s+1);  
        }  
        else  
        {  
            return 0;  
        }  
    }  
      
    int main()  
    {  
        printf("%d
    ", strlen_r("abc"));  
        printf("%d
    ", strlen_r(""));  
          
        return 0;  
    }  
    

    递归函数设计示例二

    斐波拉契数列递归解法

    #include <stdio.h>  
      
    int fac(int n)  
    {  
        if( n == 1 )  
        {  
            return 1;  
        }  
        else if( n == 2 )  
        {  
            return 1;  
        }  
        else  
        {  
            return fac(n-1) + fac(n-2);  
        }  
          
        return -1;  
    }  
      
    int main()  
    {  
        printf("%d
    ", fac(1));  
        printf("%d
    ", fac(2));  
        printf("%d
    ", fac(9));  
          
        return 0;  
    }  
    

    小结

    • 递归是一种将问题分而自治的思想
    • 用递归解决问题首先要建立递归的模型
    • 递归解法必须要有边界条件,否则无解
  • 相关阅读:
    公司 make makefile 工具
    单元测试
    光速是宇宙中最大的速度
    数据库与数据仓库
    看完了黑客帝国
    ArcGIS Server(详细介绍)转
    js判断文件大小
    项目经理人必须要遵循的14个成功原则(转)
    文件夹选择对话框 JS实现(转)
    导出excel乱码问题(小技巧)
  • 原文地址:https://www.cnblogs.com/yanyun888/p/9213306.html
Copyright © 2011-2022 走看看