我可以让函数定期工作但是当我递归地执行它时,它会无限重复,我必须'Ctrl C'才能在shell中结束它。
非递归
def convert_10_to_16(n):
hexlist =[]
x = n // 16
if x < 10:
hexlist.append(x)
elif (x == 10):
hexlist.append('A')
elif (x == 11):
hexlist.append('B')
elif (x == 12):
hexlist.append('C')
elif (x == 13):
hexlist.append('D')
elif (x == 14):
hexlist.append('E')
elif (x == 15):
hexlist.append('F')
y = n % 16
if y < 10:
hexlist.append(y)
elif (y == 10):
hexlist.append('A')
elif (y == 11):
hexlist.append('B')
elif (y == 12):
hexlist.append('C')
elif (y == 13):
hexlist.append('D')
elif (y == 14):
hexlist.append('E')
elif (y == 15):
hexlist.append('F')
return ''.join(hexlist)
递归
def convert_10_to_16(n):
hexlist =[]
x = n // 16
if x < 10:
hexlist.append(x)
elif (x == 10):
hexlist.append('A')
elif (x == 11):
hexlist.append('B')
elif (x == 12):
hexlist.append('C')
elif (x == 13):
hexlist.append('D')
elif (x == 14):
hexlist.append('E')
elif (x == 15):
hexlist.append('F')
y = n % 16
if y < 10:
hexlist.append(y)
elif y >= 10:
z = y
convert_10_to_16(z)
我不确定如何让它以递归的方式工作,所以非常感谢任何帮助!
答案 0 :(得分:0)
你需要一个递归的案例和一个基本案例。
但更重要的是使用具有含义的变量名称。
def convert_digit_to_hex(x):
if x < 10:
return str(x)
elif (x == 10):
return 'A'
elif (x == 11):
return 'B'
elif (x == 12):
return 'C'
elif (x == 13):
return 'D'
elif (x == 14):
return 'E'
elif (x == 15):
return 'F'
def convert_number_to_hex(n):
remaining_digits = n // 16
last_digit = n % 16
if remaining_digits == 0:
return convert_digit_to_hex(first_digit)
else:
return convert_number_to_hex(remaining_digits) + convert_digit_to_hex(last_digit)
答案 1 :(得分:0)
这可以简单,递归地完成,而无需内置函数并且不需要list
数据结构:
DIGITS = "0123456789ABCDEF"
def convert_10_to_16(number):
number, remainder = number // 16, DIGITS[number % 16]
if number:
return convert_10_to_16(number) + remainder
return remainder
if __name__ == "__main__":
for number in range(257):
print(number, '=', convert_10_to_16(number))
答案 2 :(得分:-1)
在python中执行将十进制转换为十六进制的递归函数时,可以使用字符串格式操作符“%”。通过使用“%x”或“%X”,它有助于将十进制转换为十六进制。
def main():
#Asks user for decimal
number = int(input("Enter a decimal: "))
num = convert(number)
print(num)
def convert(dec):
#Converts the decimal to hexadecimal
hex = "%X" % dec
print("The hexadecimal is: ", end="")
#Prints hexadecimal
return hex
main()