高考加油
![20c32c0c49e26fd73755e52bcd4a64ca.png](https://i-blog.csdnimg.cn/blog_migrate/a804e2c62278893c65f0a67dce6af928.png)
在前面的文章中堆栈也用于进制转换(存放余数)。而递归也可以用于进制转换,有固定模式循环,并且可以规模越来越小的问题都可以转换成递归
栈与递归之间一定有点联系
整数转换成任意进制
日常运算都是采用额十进制,但无论什么进制都可以采用一个固定的公式进行进制转换(n为整数,base是进基数)
n // base :得到下一个被除数(规模减小)
n % base:得到当前的余数
例如:计算769转换成十进制
![58ad8a8d2626353c2836e85332bc8c3d.png](https://i-blog.csdnimg.cn/blog_migrate/ca3c3d1fe98a21301b0903a6718e4a2b.png)
问题分解
基本结束条件:余数小于进制基base(循环结束条件)
其实说白了,就是将数学中的进制转换用递归实现,而递归就是代替循环
在理解递归时,不要想的太复杂,直接将递归调用的地方展开成每次循环返回的结果
return convert_base(number//base, base) + convert_string[number%base]
这段代码是递归调用的部分,将其展开来理解(递归就是代替了循环),其一步步等价于
也可以这样理解:
![71fbb693aaa1306ae511b0f581eb2e46.png](https://i-blog.csdnimg.cn/blog_migrate/575142c85156e30e02a453e50043f878.png)
高考加油