[英]Do not understand how this recursion function works in Python
0 -> 'Z', 1->'X', 2->'T', 3->'J', 4->'A', 5->'W', 6->'F', 7->'S', 8->'B', 9->'V'
为了帮助您的朋友恢复 integer,请在答案框中编写递归 function re_decry(x),这样如果 x = re_encry(m),则 re_decry(x) 返回 Z1572515ZDF53002367。
所以基本上,如果 x = "XTJA",output 应该是 1234。
我的代码
def de_encry(x):
if len(x) == 1:
return mydict[x]
if len(x) > 1:
return de_encry(x[0:len(x)-1]) + mydict[x[len(x)-1]]
我写了这个,但是 output 是错误的。 这输出 10
建议的答案是
def de_encry(x):
if len(x) == 1:
return mydict[x]
if len(x) > 1:
return de_encry(x[0:len(x)-1])*10 + mydict[x[len(x)-1]]
这输出 1234
我不明白为什么 *10 会产生或破坏答案,为什么我的代码不起作用? 这不是作业题,我只是在练习
针对较小的输入编写测试。 例如,如果您的输入是WW
,那么您的第一个解决方案将返回 10、5+5。 你得到正确的数字,但不是加法
如果将每个数字乘以 10,然后添加“个位”,则实际上将数字左移,因此将返回 55 (5*10+5 = 50+5),或者逻辑上,“5,左移,然后为WW
附加 5"。
将其扩展为三个字母,您得到((x*10)+y)*10 + z
= x*100 + y*10 + z
,这是x, y, z < 10
的三位数
注意:您应该询问所有 Z 的字符串是字符串0000
还是只是 int 0
数字1234不等于1+2+3+4; 它等于 (((1*10)+2)*10+3)*10)+4。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.