利用Python请编写程序实现: 1、定义一个递归函数fun(n,r), 实现将十进制 数n转换成r (2<=r<=16) 进制数,转换的结 果为函数的返回值。( 注意r>10之后的处理方法) 2、在主程序中调用测试该函数。
时间: 2024-03-13 10:46:48 浏览: 27
可以使用以下代码实现:
```python
def fun(n, r):
if n == 0:
return ''
else:
digit = n % r
if digit < 10:
return fun(n // r, r) + str(digit)
else:
return fun(n // r, r) + chr(ord('A') + digit - 10)
n = 12345
r = 16
result = fun(n, r)
print(result)
```
解释一下代码:
- 函数 `fun(n, r)` 接受两个参数,分别为要转换的十进制数 `n` 和目标进制数 `r`。
- 在函数内部,我们首先处理边界情况:如果 `n` 已经是 0,那么直接返回空字符串。
- 否则,我们计算出 `n` 对 `r` 取模的值 `digit`,并将其转换成对应的字符或数字。如果 `digit` 小于 10,直接将其转换成字符串;否则,需要将其转换成对应的大写字母。
- 接着,我们递归调用 `fun` 函数,将 `n` 除以 `r` 的结果作为新的参数传入,并将之前计算出的字符或数字加到结果的末尾。
- 最终,我们得到的结果就是将 `n` 转换成 `r` 进制数后的字符串。
在主程序中,我们可以传入一些不同的参数来测试该函数的正确性。例如,将 `n` 设为 12345,将 `r` 设为 16,就可以得到将 12345 转换成 16 进制数的结果。