博文

目前显示的是 一月, 2025的博文
图片
  递归技术 在计算机中 , 递归技术是和迭代技术齐名的技术 , 特别是在 elixir 和 lisp 编程语言中的递归相对于命令式的编程语言 python,c 语言等更是无处不在了 . 乘法例子 我们小学的时候 , 经常计算的一个题目是 b 个 a 是多少 , 大家都知道答案是 a*b, 如果用 python 来写就是 : 这样直接算的就是属于迭代技术 , 只是只有一次迭代 , 所以你没有见到 for 或者 while 等用于循环执行代码的 python 关键字 . 对于这个例子 , 我们可以认为在做两个数字相乘的结果 , 如上所说 , 我们可以看成是 b 个 a 相加 ,a+a+……a, 那么我们就有如下的计算乘法的迭代代码 : 所以 , 这很简单 , 对吧 ! 接下来转换思路 , 为了方便说明 , 我们假设 a=5,b=4, 那么 a*b 就是 5*4, 之前就说过可以把 5*4 看成 4 个 5 相加 ,5+5+5+5, 这个式子可以看成 5+5*3, 就相当于你让我计算 5*4 的结果 , 也就是 4 个 5 相加 , 但是我去算 5+5*3, 等同于我去算 3 个 5 相加 , 然后在和 5 相加 , 这样算下的结果和 4 个 5 是一样的 , 但是你不知道 3 个 5 相加是多少 , 于是你可以把 3 个 5 相加看成是 5+5*2, 可以你还是不知道 2 个 5 是多少 , 于是你可以把 2 个 5 看成是 5+5*1, 所以你就要去求 1 个 5 是多少了 , 很明显的 1 个 5 是 5 啊 , 因为就常识来说 ,1 个任何数肯定是任何数 , 这也是最基本的情况了 . 递归的递到这里其实已经结束了 , 接下来的过程是属于归的过程了 , 你知道了 1 个 5 的结果是 5, 那么你就可以计算 5+5*1, 这个不就是 2 个 5, 当时我们计算 3 个 5 相加的时候是依赖于 2 个 5 的 , 现在 2 个 5 的结果你已经知道了 , 所以 2 个 5 的结果加上 5 就是 3 个 5 的结果了 , 3 个 5 的结果你知道了 , 那么 3 个 5 的结果加上 5 就是 4 个 5 的结果了 , 你也就知道答案了 . 5*4=5+5*3    =5+5+5*2 ...