我的参数n
是一个整数形式的电话号码。在
使用递归,我想返回整数中的前三个数字。在
我已经把整数变成了一个单独的数字字符列表,我试图一次又一次地删除最后一个数字,直到只剩下最后三个,但我还是不知道如何重复它。在
def areaCodes(n):
n = str(n)
n = list(n)
del n[-1]
#n = reduce(opperator.add, n)
n = ''.join(n)
n = int(n)
return n
我知道我应该以某种方式在返回中重复这个名称,但是因为n
不是一个可以用来重复的整数。我该怎么办?在
Tags:
记住,对于递归函数,它将有两个主要属性:
- 它会在某个时刻称自己为。(这就是“重复”的原因)
- 它将有一些停止条件(或基本情况)。在
当你写了1个字时,你提到了你应该用“名字在返回”,所以太好了!你只需要在代码中写下:return areaCodes(n)
,其中n
是已删除数字的更新电话号码。在如您所见,每个递归调用都应该对解决方案做一些工作,并且应该将其小型解决方案传递给下一个递归调用。在
除了上面的#2之外,还需要指定一个基本情况,递归将停止。因此,由于每次调用函数时都要去掉一个数字,所以应该进行某种检查,看看当前输入是否是您想要的长度。在
如果它的长度是正确的,就完成了,应该返回当前的数字(而不是另一个递归调用)。在
否则,你还没有完成递归。在
这样的怎么样?在
我假设这是一个需要递归的练习。如果是的话,试试这个(有更好的方法来完成你的最终目标,但是我尽量少修改你现有的代码):
如果数字的长度大于3,它将再次调用函数,否则将返回数字。基本上,原始函数中唯一缺少的部分是以下部分,即递归部分:
^{pr2}$相关问题 更多 >
编程相关推荐