2 回答

TA贡献1836条经验 获得超13个赞
虽然可以使任何事物递归,但请始终牢记递归是有代价的。这通常是维护成本,因为该算法使必须使其工作的人感到困惑。
在您的情况下,一个好的停止条件是“空字符串”。切断您处理过的字符并递归调用自己getdigits(entered[1:])
不要忘记删除您想用递归替换的循环。
作为一种心理模型,将此视为处理项目的一种方式。您可以通过将项目排成一行并走过它们(循环/迭代)或将它们放在堆栈上并从顶部选择第一个直到堆栈为空(递归)来处理项目。

TA贡献1844条经验 获得超8个赞
解决这个问题的简单方法是初始化一个变量空字符串(nums = ""):
def getdigits(entered, nums = ""):
if entered:
if entered[0] in "0123456789":
nums += entered[0]
entered = entered[1:]
# recursive
getdigits(entered, nums)
else:
# entered is empty string
print(nums)
entered = ("1.234.123[123]")
getdigits(entered)
entered = ("**1.23a-42")
getdigits(entered)
添加回答
举报