2 回答

TA貢獻1836條經(jīng)驗 獲得超13個贊
雖然可以使任何事物遞歸,但請始終牢記遞歸是有代價的。這通常是維護成本,因為該算法使必須使其工作的人感到困惑。
在您的情況下,一個好的停止條件是“空字符串”。切斷您處理過的字符并遞歸調(diào)用自己getdigits(entered[1:])
不要忘記刪除您想用遞歸替換的循環(huán)。
作為一種心理模型,將此視為處理項目的一種方式。您可以通過將項目排成一行并走過它們(循環(huán)/迭代)或?qū)⑺鼈兎旁诙褩I喜捻敳窟x擇第一個直到堆棧為空(遞歸)來處理項目。

TA貢獻1844條經(jīng)驗 獲得超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)
添加回答
舉報