• 第一讲 递归与循环1


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    /*
    * @Author: SHUAI
    * @Date:   2015-12-02 21:13:30
    */
    /*
            理论上,任何循环都可以重写为递归形式
                    有时候,为栈限制,需要'尾递归'
                    java不支持尾递归
            有些语言没有循环语句,只能使用递归(Lisp等)
     
            改为递归的关键是发现逻辑"相似性"
            不要忘记递归"出口"
    */
    #include <stdio.h>
     
    void funa(int n) {
      if (n > 0) funa(n - 1);
      printf("%d ", n);
    }
    void funb(int n) {
      printf("%d ", n);
      if (n > 0) funb(n - 1);
    }
    int main() {
      funa(10);
      printf(" ");
      funb(10);
      return 0;
    }
     
    /*笔记====================
     
    funa()先调用自身,所以显示10先入栈,逐次9,8,7,...1
    然后出口,不在递归调用,逐个出栈。
     
    funa()和funb()的顺序
    递归调用逐个插入在什么位置。
    funa()就是从10到0,从下往上
    funb()就是从10到0,从上往下
     
    */

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    /*
    * @Author: SHUAI
    * @Date:   2015-12-03 17:13:08
    */
    #include <stdio.h>
     
    void fun(int begin, int end) {
      printf("%d ", begin);
      if (begin < end) fun(begin + 1, end);
    }
     
    int main(void) {
      fun(2, 6);
      return 0;
    }
        

     

    =============注===============

    部分叙述来自于蓝桥杯讲解视频。

  • 相关阅读:
    js获取页面所有搜索条件
    js计算两经纬度之间的距离
    .NET MVC 序列化与反序列化
    微信浏览器内禁止页面回退返回
    Winform组合ComboBox和TreeView实现ComboTreeView
    如何在Oracle触发器中使用查询语句
    DevExpress Winform:纯代码方式创建PopupMenu
    DevExpress GridView 鼠标热点追踪 高亮显示行
    Task.Wait and “Inlining”
    重置Visual Studio 2017的配置
  • 原文地址:https://www.cnblogs.com/startnow/p/5014603.html
Copyright © 2020-2023  润新知