zoukankan      html  css  js  c++  java
  • C语言学习笔记--递归函数

    1. 递归函数的思想

    (1)递归是一种数学上分而自治的思想,是将大型复杂问题转化为与原问题相同但规模较小的问题进行处理的一种方法

    (2)递归需要有边界条件

        ①当边界条件不满足时,递归继续进行

        ②当边界条件满足时,递归停止

    2. 递归函数

    (1)递归函数的函数体内部存在自我调用

    (3)递归函数是递归的数学思想在程序设计中的应用。必须有递归出口,无限递归将导致程序栈溢出而崩溃。

    3. 递归函数设计技巧

    (1)递归模型的一般表示法

    4. 递归函数设计实例

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

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

    (2)斐波那契数列递归解法

    #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);
        }
    }
    
    int main()
    {
        printf("%d
    ",fac(1));
        printf("%d
    ",fac(2));
        printf("%d
    ",fac(5));
    
        return 0;
    }

    (3)汉诺塔问题

        ①需求描述

    I、将木块借助 B 柱由 A 柱移动到 C 柱

    II、每次只能移动一个木块

    III、只能出现小木块在大木块之上

        ②问题分解

    I、将 n-1 个木块借助 C 柱由 A 柱移动到 B 柱

    II、将最底层的唯一木块直接移动到 C 柱

    III、将 n-1 个木块借助 A 柱由 B 柱移动到 C 柱

    #include <stdio.h>
    
    void han_move(int n, char a, char b, char c)
    {
        if (n == 1)
        {
             printf("%c --> %c
    ", a, c);
        }
        else
        {
            han_move(n -1,a, c, b);
            han_move(1, a, b, c);
            han_move(n -1, b, a, c); 
        }
    }
    
    int main()
    {
    
        han_move(3, 'a', 'b', 'c');
    
        return 0;
    }

    递归是一种将问题分而自治的思想,用递归解决问题首先要建立递归的模型。

    参考资料:
    www.dt4sw.com
    http://www.cnblogs.com/5iedu/category/804081.html

  • 相关阅读:
    HDU 1002 大数A+B
    HDU 2066 一个人的旅行(最短路)
    HDU 1869 六度分离(最短路 floyd)
    HDU 1159 Common Subsequence(LCS)
    POJ 3061 Subsequence(尺取法)
    NYOJ 10 skiing(记忆化搜索)
    dedecms添加全站的rss订阅功能
    dedecms artlist读取全站最新文章
    dedecms的title怎么优化?
    DedeCMS提示Maximum execution time of 30 seconds exceeded in解决办法
  • 原文地址:https://www.cnblogs.com/CoderTian/p/5915071.html
Copyright © 2011-2022 走看看