【发布时间】:2021-12-10 02:03:08
【问题描述】:
这是我的代码
def count_occurrences(sub, s):
if len(s) == 0:
return 0
else:
if str(sub) in str(s) and str(sub) == str(s):
return 1+count_occurrences(sub, s[1:])
else:
return count_occurrences(sub, s[1:])
print(count_occurrences('ill', 'Bill will still get ill'))
我相信,当我运行调试器 UI 时,这条 if str(sub) in str(s) and str(sub) == str(s): 语句让我大吃一惊。如果我只是输入if str(sub) in str(s),它会给我一个数字,但它不是我想要的数字,它是 4。
【问题讨论】:
-
一个例子和你的输出将有助于更好地理解问题
-
你已经决定
s[1:]是你应该传递给递归的值,那里的预期逻辑是什么?尝试用简单的英语单词解释您希望代码使用的算法,并解释为什么该算法应该给您正确的答案。然后将其与代码进行比较。 -
"它给了我一个数字,但它不是我想要的数字,它是 4。"那么,它给你的是多少?你能想出一个为什么它给你这个确切数字而不是其他任何东西的原因吗?如果不是,则更详细地跟踪逻辑。尝试在执行的不同点检查更多变量的值。见ericlippert.com/2014/03/05/how-to-debug-small-programs。
-
input = count_occurrences('ill', 'Bill 还是会生病') output = 21
标签: python string recursion substring thonny