解决方案
首先,我们需要定义两个函数:to_32_bit_binary()和to_decimal()。这两个函数都需要使用递归进行实现,而不能使用for循环或while循环。
下面是to_32_bit_binary()函数的实现:def to_32_bit_binary(num): """ 该函数将给定的十进制数转换为对应的32位二进制表示形式,并以字符串的形式返回。 参数: num:int类型,表示要转换的十进制数,取值范围为[0, 4294967295]。 返回: str类型,表示32位二进制表示形式。 """ if num == 0: return '0' * 32 elif num == 1: return '0' * 31 + '1' else: quotient = num // 2 remainder = num % 2 return to_32_bit_binary(quotient) + str(remainder)
接下来是to_decimal()函数的实现:def to_decimal(binary): """ 该函数将给定的32位二进制表示形式转换为对应的十进制数,并以整数的形式返回。 参数: binary:str类型,表示32位二进制表示形式,仅包含'0'或'1',长度为32。 返回: int类型,表示转换后的十进制数。 """ if binary == '0' * 32: return 0 elif binary == '0' * 31 + '1': return 1 else: last_bit = int(binary[-1]) remaining_bits = binary[:-1] return 2 * to_decimal(remaining_bits) + last_bit
这样,我们已经完成了两个函数的定义。接下来,我们可以通过调用这两个函数并传入不同的参数来测试它们的功能。
测试样例
首先是to_32_bit_binary()函数的测试样例:# 函数调用示例print(to_32_bit_binary(0))print(to_32_bit_binary(123))print(to_32_bit_binary(4294967295))# 期望的返回值expected_results_to_32_bit_binary = [ '00000000000000000000000000000000', '00000000000000000000000001111011', '11111111111111111111111111111111']# 实际的返回值actual_results_to_32_bit_binary = [ to_32_bit_binary(0), to_32_bit_binary(123), to_32_bit_binary(4294967295)]# 比较期望的返回值和实际的返回值for expected, actual in zip(expected_results_to_32_bit_binary, actual_results_to_32_bit_binary): print(f"Expected: {expected}") print(f"Actual: {actual}") print("------------")
然后是to_decimal()函数的测试样例:# 函数调用示例print(to_decimal('00000000000000000000000000000000'))print(to_decimal('00000000000000000000000001111011'))print(to_decimal('11111111111111111111111111111111'))# 期望的返回值expected_results_to_decimal = [ 0, 123, 4294967295]# 实际的返回值actual_results_to_decimal = [ to_decimal('00000000000000000000000000000000'), to_decimal('00000000000000000000000001111011'), to_decimal('11111111111111111111111111111111')]# 比较期望的返回值和实际的返回值for expected, actual in zip(expected_results_to_decimal, actual_results_to_decimal): print(f"Expected: {expected}") print(f"Actual: {actual}") print("------------")
通过以上的测试样例,我们可以验证函数的正确性。
请注意,在提交代码之前,请确保从binary.py文件中删除任何测试函数的调用。
希望这能帮到你!如果有任何问题,请随时问我。
球一个最佳答案谢谢啦!这对我非常重要! |