题目:
除二取余方法的递归定义,如下:
其中,⋈ 表示拼接。
公式的意思是:如果十进制正整数 d 等于 1,那它对应的二进制 b 就是 1;否则 d 大于 1,那它的二进制就是 d 整除 2 的商对应的二进制,拼接 d 整除 2 的余数。
问题描述:
########## Begin ##########
def f(d):
if d==1:
return 1
else:
return (str(f(d//2)+str(d%2)))
########## End ##########
d = int(input())
print(f(d))
做的时候想要一步到位,运行后好像语法显示错误。
仔细检查发现括号缺了一个。应该修改为:
########## Begin ##########
def f(d):
if d==1:
return 1
else:
return(str(f(d//2))+str(d%2))
########## End ##########
d = int(input())
print(f(d))
在平时,可以考虑分步走,纠错会容易一点。
########## Begin ##########
def f(d):
if d==1:
return 1
else:
s1=str(f(d//2))
s2=str(d%2)
s=s1+s2
return s
########## End ##########
d = int(input())
print(f(d))
总结:
拼接的时候要注意将其转换为字符串