Tip:
Highlight text to annotate it
X
所以答案是否,它不能为所有可能的输入提供有意义的答案
原因是没有基础案例,没有基础案例,就不是递归定义
它是循环定义,这就意味着
它不可能给我们任何答案,因为我们永远无法结束,对么?
定义受欢迎度(广度)的唯一方法,不论你看数学表达式
或是Python代码,都涉及到再次调用受欢迎度程序
我们将永远无法停止
我们将持续地为不同的人调用程序,如果我们把它做成朋友图
那么情况是这样的,所以如果我们想知道Charlie的受欢迎度
我们必须看一看他所有的朋友
也就是Diana,Edgar和Fred的受欢迎度
但是他们中的每一个人,我们都需要计算他们的受欢迎度
所以Diana的受欢迎度等于Alice的受欢迎度,现在我们到了这一步,但是还得继续下去
Alice的受欢迎度等于Edgar加上Bob的受欢迎度
但我们需要继续下去,我们仍然需要Edgar的受欢迎度
它等于Fred的受欢迎度,且我们需要Bob的受欢迎度
它等于Fred的受欢迎度,那么我们就需要Fred的受欢迎度
它等于Charlie加上Bob的受欢迎度,所以这样不行,对么
问题在于我们开始试图找出Charlie的受欢迎度,我们做这些工作
反向跟随这些链接,现在要解决这个问题,我们需要知道Charlie的受欢迎度
但那正是我们试图解决的,所以这不是递归定义
要得到一个好的递归定义
我们必须以一个将问题简化后的版本结束,且永远不会回到开始
我们定义它的方式是回到初始
我们没有取得任何进步,我们永远不会得到增强
Charlie会很不高兴,因为我们永远都不会知道他有多么受欢迎