当前位置: 首页 > 网络应用技术

岭去世,伯克利CS61A,作业3,几个问题,结束后立即升华

时间:2023-03-05 20:30:04 网络应用技术

  大家好,我去世了,我是Liang Tang。这篇文章在公共帐户中开始:

  今天,我们继续谈论伯克利的CS61A课程。这次我们看作业3。

  任务

  github

  除了这次专注于功能编程外,作业还增加了递归检查。我个人认为这也是学习和理解的一个很好的案例。

  与以前的作业相比,这次操作增加了很多,尤其是其他问题,这确实非常困难。很难让我保持感觉,这确实是伯克利的作业...

  它的困难是不使用新知识。实际上,使用了基本的python功能编程和递归想法。在思考的调查中很难深入研究……我强烈建议每个人都仔细观察,您绝对可以刷新认知。

  好吧,我不会说太多胡说八道,让我们一起看看这些问题。

  函数是通过递归方法实现的,以确定给定数字是否包含7。

  这个问题非常简单。递归常规用法,每次获得10个模具的最后一个数字时,都会确定它是否为7,然后确定递归过程。

  实现一个具有两个参数的递归函数,一个是整数n,另一个是一个函数。重新定语$ sum_ {i = 1}^n term(i)$的结果。

  这也是递归的常规用法。当n = 1时,返回,否则返回。

  为了实现该函数的通用版本,它接受4个参数:

  该函数接收两个整数,并返回两个整数绑定的结果。例如,常规添加和乘法全部。

  我们有几个示例可供参考:

  您可以在n = 0时了解结果。

  与现在相比,这个问题的困难刚刚增加。它要求我们充分理解,功能用法并完全理解递归想法。在函数中,我们使用了添加的结果,在此替换。

  由于只能接收两个结果,并结合递归,因此可以将这两个结果设置为和谐。实际上,魔法结果与当前的结果结合在一起。

  代码显示如下:

  该功能是通过函数和生产来实现的。仅应用我们刚刚实施的功能。

  进一步增加了在实施函数的基础上增加过滤的难度和需要增加过滤的功能。有一个功能多于该功能,这是确定是否需要过滤值的功能。

  您不能在功能中调用自己(递归),也不能按周期实现。

  让我们参考以下示例:

  显然,源代码已提醒我们,我们需要实现该功能并调用该功能以完成逻辑。

  该功能用于判断情况。该功能接收两个参数,并表示要处理两个数字。如果可以通过的测试,则结果显然返回。

  如果我们不能通过测试,那么我们返回。相似,如果您不能通过,可以通过,然后返回,但是如果不能做什么?回到0?

  显然,我们无法返回0,因为返回0将来会导致错误。这是一个困难。

  经过平静的分析,您会发现这种情况是不可能的,必须是合法的。LET审查了先前功能的实施,返回的结果是。我们零件的两个部分是和谐的。

  前者是迭代的结果。由于它是迭代的结果,因此必须是合法的。因此,我们只需要确定是否可以通过pred。因为即使所有元素都是非法的,并且有底部为底部,递归的结果绝不为空,在非法时可以返回基础。

  判决在这里不是绝对的,这与我们的职能的实施有关。

  在中间实现功能,呼叫时返回并嵌套n时间。

  让我们在评论中查看样本:

  例如,第一个意味着将一个乘以3。

  显然,最简单的方法是使用该周期:

  如果我们不使用周期,则递归程序实际上与上述问题相同,我们假设。然后我们要返回的结果是。

  因此,代码是:

  简而言之,结果是一个函数。我们假设它称为$ g^n $。然后是我们想要的答案,然后退货为$ g^{n-1} $。

  给定功能:

  需要在中间调用和功能,并仅使用一行代码来实现该功能。

  这两个函数可以嵌套,然后我们可以考虑使用函数的功能。然后,我们需要首先将所有1-n数字转换为函数,也就是说,要实现函数,接收整数,返回函数,然后通过规范设置它。组织想法后,代码如下:

  这个问题是要实现一系列代码的另一个问题,因此该代码行的操作结果与代码本身相同。该代码称为quine。

  暗示:

  尽管有这些技巧,但我仍然没有弄清楚,这确实太困难了。如果您有兴趣,可以自己尝试。LET分享了一些从互联网上的大个子看到的答案:

  附带的问题,逻辑学家阿隆佐教堂(Alonzo Church)发明了一种使用功能代表非阴性整数的方法,因此整数指示称为教会数字。

  这个问题的目的是模仿这个想法以实现教会数字。标题提供了零的定义:

  首先,我们需要做的是根据和功能实现和功能。

  它具有相同的逻辑,并且具有相同的逻辑。

  当我看到逻辑时,它太复杂了。两个匿名功能被嵌套了,回报的结果也很奇怪,他们看不到它是什么。

  但是冷静下来,我们可以发现我们可以替换功能,因为该函数的逻辑非常简单,无论引入什么参数,一切都可以返回。因此,我们可以替换n,因此结果是,结果,结果,表达式简化,这是返回的结果。

  我们希望使函数具有相同的逻辑。实际上,它非常简单,即,最外面的匿名函数被真实函数替换,名称为。因此该函数的代码为:

  阅读后,让我们再次看一下。目前,我们要求它,这是本质上的要求。我们可以按照内部替换,而替换是返回的结果,这也是一个函数,接收参数并返回。

  巧合的是,随后是参数,因此它成为了替换。整个代码段落很简单:。

  当我们操作相同的操作时,我们将意识到该名称的实现:

  接下来是将其代码带入该主题。

  让我们模仿上述方法来代替它并获得它。

  在这一点上,我们找到了规则。我们使用函数的嵌套层数来表达图形。

  在下一个问题中我们需要做的是将函数转换为整数,这实际上是解锁功能的过程。

  我只是想通过递归来实现它,但是我发现有一个问题。即使我们将其求解到0,我们得到的仍然是一个函数。当我想到它时,灯光闪烁:由于这是嵌套功能的一层,我们可以使用该功能的嵌套来获取数量层?

  实现方法也非常简单。

  接下来,我们要实现整数,乘法和乘法。

  所使用的方法相似。我们将M和N视为一个整体。M是嵌套的N F函数的总体。它可以被视为函数f的函数。N是嵌套的N F函数的整体。当M和N的参数F相同时,我们需要M+N,并且我们需要M+N。f [f [f [f(f(f(f)嵌套。

  由于M和N是关于F的高阶函数,因此可以简要地转称M和N的定义:$ m(f)(n(f)(x))$。

  因此,代码是:

  当计算M X n时,我们需要嵌套函数f n次,然后在嵌套的标准m次时获得的n函数。此M函数的这段时间,其参数不再函数f,而是函数n。

  代码显示如下:

  也可以向此简要介绍:

  最后,它乘以。我们需要计算$ m^n $,即M n函数嵌套。众所周知,$ n(f)$的函数是鼻子f函数n层。显然,我们将M函数视为一个整体,并且自然地将M函数传递为N函数的参数。

  它也可以简化为:

  我不知道每个人是否在这里发现了问题。最大的问题是写了m x n:$ m^n $:两个外观非常非常相似。为什么结果如此之大?

  最简单的解释是不同的作用。让我们首先看看第一个:。我们将M和N视为一个整体。在这一行代码中,n接收一个参数。m接收到的参数。我们可以更改元素。我们假设该函数的合奏是。

  让我们看一下第二行代码:这里m函数不输入参数,n函数是表面的参数,参数之一是m,似乎是相似的。差异很大。这是N函数在上述上作用的结果。该结果不再具有注意函数n层的能力。因此,外层放在M函数上,只有结果本身与M次嵌套。不同,传递的参数输入为m本身,而不是结果m功能。M函数的函数是输入函数M次,因此,当通过N函数到本身的N函数起作用时,层的总数将无法在M上无法达到。

  我不知道您是否在这里看到它。如果您的大脑被掩盖了,请不要惊慌或怀疑智商。这是非常正常的。高级别功能是函数和返回结果。使人们变得积极进取真的很容易。当我第一次做这些问题时,我花了一两个小时,所以我不知道。

  但是实际上,没什么大不了的。我一次不了解。在我坚持多次思考后,我逐渐理解了它。每当我想到时,我都会感到自己的想法很清楚。几次,没有错。

  因此,不要害怕,想一想,想更多,不要理解更多的时间,也许在下一刻,您会发现一切都突然开朗。