• 第一讲 递归与循环3


    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
    /*
    * @Author: SHUAI
    * @Date:   2015-12-05 08:50:58
    */
    /*
            串的比较,思路s1[0]==s2[0] 逐层递归
            三个出口 长度不同  比较到最后0个 首字符不同
            递归条件 不在出口范围说明首字符相同,且长度相同不为0
    */
    #include <stdio.h>
    #define N 6
    #define M 6
    int fun(char s1[], int length1, char s2[], int length2) {
      if (length1 != length2) return -1;
      if (!length1) return 1;//if (!s1[0]) return 1;
      if (s1[0] != s2[0]) return -1;
      fun(s1 + 1, length1 - 1, s2 + 1, length2 - 1);
    }
    int main() {
      char s1[N] = "nihao";
      char s2[M] = "nihao";
      char s3[N] = "nihan";
      char s4[M] = "nihbo";
      char s5[N] = "niham";
      char s6[M] = "nihao";
      printf("%d ", fun(s1, N, s2, M));
      printf("%d ", fun(s3, N, s4, M));
      printf("%d ", fun(s5, N, s6, M));
      
      return 0;
    }
      
    /*笔记==================
    递归要注意上一个函数是否在任务完成后再使用。
    出口条件的逻辑顺序要理清。
    递归的逻辑同上。
    */

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

     
    部分叙述来自于蓝桥杯讲解视频。
  • 相关阅读:
    【BZOJ 1455】罗马游戏
    【UR #2】树上GCD
    1067: [SCOI2007]降雨量
    1068: [SCOI2007]压缩
    1066: [SCOI2007]蜥蜴
    1065: [NOI2008]奥运物流
    1064: [Noi2008]假面舞会
    1063: [Noi2008]道路设计
    2329: [HNOI2011]括号修复
    2734: [HNOI2012]集合选数
  • 原文地址:https://www.cnblogs.com/startnow/p/5021063.html
Copyright © 2020-2023  润新知