递归算法_函数

Posted by lily on April 7, 2023
  1. 定义
  2. 为什么可以使用递归
  3. 递归函数的实现原理(程序内部)
  4. 带有多个return 出口的递归函数
    1. 有返回值
    2. 无返回值
  5. 递归函数的测试
  6. 递归函数中局部变量和全局变量

  • 递归函数在结构上分三部分
    • 递归函数调用自身前
    • 递归调用自身时
    • 递归调用自身后
  • 其中在逻辑上递归函数也可以分为三部分
    • 既然是递归函数,那么停止递归调用的终止条件是什么(在什么情况下函数会继续进行递归调用)
    • 递归函数要完成的任务是什么(逻辑函数体:if-else、循环、非二者结构)
    • 函数是否有返回值,如果有返回值,返回值应该是什么

其中,在函数调用自身前,包含的结构都是在递归 调用前实现的,也就是说,在递减的递的过程中,这是函数要完成的任务;在调用自身之后,写出来的代码都是在递归调用完成之后(归的过程中,栈弹出的过程中)实现的;而在函数调用自身时,我们要关注的就是函数是否要有返回值,是否要传递返回值,如果传递返回值,那么返回值如何处理和利用。

题解

17.电话号码的组合

解题注意点:

  1. 直接操作字符串会更方便
  2. 字符串只能使用 += ,而不能使用 -=
  3. string数组可以直接 String map[]={"0", "12", "34"} 进行赋值
  4. 两层遍历可以使用index来控制外层变量(每一次递归调用就是一层遍历)
  5. 字符转int型,可以直接使用 c-'0'这样的运算符获得字符c到字符0的位置差,即int类型值