【发布时间】:2017-11-04 00:14:23
【问题描述】:
我正在尝试掌握递归。总的来说,我理解它的作用,但我在理解以下方法的工作原理时遇到了一些麻烦。
def count_numbers_in_list(list):
if list == []:
return 0
return 1 + count_numbers_in_list(list[1:])
现在我知道list[1:] 返回给定列表中除第一个之外的所有内容。
但我无法理解的是,我们从来没有在列表本身上调用类似 - 1 的东西。所以这个函数完美地工作,但对我来说这个函数返回一个无限循环也是有意义的。
我希望有人能准确地向我解释这里发生了什么。
谢谢!
【问题讨论】:
-
您应该确定
list[1:]的作用。 -
I get that list[1:] returns everything from the given list except the first.你有答案。 -
不过,如果您有问题,请使用
print语句进行调试。你应该很容易得到它。 -
将
print(list)放在def语句之后会有帮助吗?然后通过使用简短列表调用该函数来执行该函数。顺便说一下从不 使用诸如list 之类的关键字作为变量名。这样做最终会咬到你。 -
感谢您的快速回复!意味着很多;)