题目描述:
给定一个整数,将其转化为7进制,并以字符串形式输出。
示例 1:
输入: 100
输出: “202”
示例 2:
输入: -7
输出: “-10”
注意: 输入范围是 [-1e7, 1e7] 。
解题思路:
此题可用递归来解决,递归三定律为:
- 递归算法必须具有基本情况。
- 递归算法必须改变其状态并向基本情况靠近。
- 递归算法必须以递归方式调用自身。
那么:
1、基本情况为小于7整数的7进制和10进制相同。
2、用此数整除7加上此数求余7,即num//7+num%7,可以向基本情况靠近
3、调用递归函数自身来完成。
但是Python的整除和求余是向下取整的,导致小于0的整数,整除和求余的结果是异常的,所以要把小于0的情况单独处理。即取整此数除以7的值代替整除加上此数相应的整数求余,int(num/7)+(-num)%7
代码实现:
class Solution:
def convertToBase7(self, num: int) -> str:
if num >= 0:
if num < 7:
return str(num)
else:
return self.convertToBase7(num//7)+str(num%7)
else:
if abs(num)<7:
return str(num)
else:
return self.convertToBase7(int(num/7))+str(-num%7)