繁体   English   中英

不明白这个递归 function 如何在 Python 中工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM