我必须编写一个递归函数,它在 10 基数中获取一个数字 (n) 并将其转换为给定的数字基数 (k) 并返回一个列表,其组件是最终数字,例如 f (5, 3) 必须产生 [1, 2] 以 3 为基数的 5 是 12,或者 f(22, 3) 必须产生 [2, 1, 1].
这是我试过的代码:
def cb(n, k):
b = []
if n == 0:
b.append(0)
if n < k:
b.append(n)
if n == k:
b.append(10)
else:
a = n // k
b.append(n - ((n // k) * k))
if a < k:
b.append(a)
else:
cb(a, k)
return b
print(cb(22, 3))
其实我想了很多,但是因为我不太擅长写代码,所以我不能再进一步了。感谢您对我的代码的帮助和修改。
请您参考如下方法:
如果您从递归的角度考虑,基本情况是 n < k。答案是n并获取 n 的最后一位数字你做n%k所以递归的情况是cb(n//k,k)+[n%k] .
代码看起来像这样:
def cb(n, k):
if n < k:
return [n]
else:
return cb(n//k, k) + [n%k]
print(cb(22, 3))
