让我们回想一下上一课中的这个前导代码问题, 对吧？
如果我们在这里修修补补呢？
好吧
只是为了证明这一点, 让我们实际上这是一个不同的聊天窗口, 从我们给他们泄漏代码链接的其他聊天窗口
假设我有下面的序列或者下面的问题陈述
把这个贴进去
我的解决方案是
不工作
为什么？
然后让我们继续粘贴一个修改过的版本, 在那里我们有点搞砸了二分搜索
在这里加一个1, 在这里加一个2, 我们甚至拼错了, 这里拼错了, 变成了光
好吧
让我们看看它是否能够找出其中的一些问题
所以很明显, 首先, 逻辑上有一个大问题, 就像它甚至不应该是正确的
其次, 有一个语法错误, 甚至不允许它正确编译, 因为在这个函数中,
光从来没有被声明为变量
因此, 您的解决方案中的问题是中间索引mid的计算
所以这是完全没问题的
我们来看看
我们最终改变的是这个mod函数, 让我们看看它们给我们带来了什么
是的
他们把我们的国防部改回了两个
你应该除以2得到中间的索引
更改mid的计算并允许您的解决方案工作
是的
所以他还对代码做了一些其他的修改, 包括检查中间三等于零到中间一等于零,
以及一个错字
所以它实际上是在谈论它为我们修复的一切
如果我们把它粘贴进去, 我毫不怀疑这和我们以前的情况差不多
但不管怎么说, 这是个正确的解决方案
是的, 这工作完美
它确切地知道我们修复了什么, 尽管这与我们在上一课中的对话上下文不同
所以它实际上记住了这些东西, 这真的很有趣
也许我们甚至可以追溯到更早的时候, 我们讨论素数的时候, 对吗？
那么如果我们说, 记住埃拉托斯特尼的筛子需要有一个特定的数字范围
好吧
我们从5开始, 然后一直到x的平方根
比如x的平方根, 对.
我们来看看
为什么是我的算法生成的？
启动缓慢且不正确
因为现在我们不仅没有得到输入数X的平方根因子, 而且得到了它的幂
而且我们还在修改起始号码
所以这实际上甚至不能找到四个数字的三的因数, 这将是非常有问题的
让我们看看它是否能找出问题所在
在我改变它之后, 它是不正确的, 因为它是外部循环中的一个范围
应该是2的x的平方根, 而不是5的X天的平方
真的很好吃
这是这是
这东西真的很特别
这是
是的
所以, 我的意思是, 如果你正在实现一些未知的算法, 你只是不知道哪里出了问题,
你得到了一些不正确的输入, 这件事是疯了
就像它真的可以挑出你的算法的缺陷, 并给你你需要做的修正,
非常简单
所以是的
它甚至解释了为什么, 对吧？
它说这个算法高效的原因是因为你只需要检查X的平方根,
这是这个算法运行速度非常快的一个重要组成部分
所以如果我们一直迭代到X的平方, 那只会浪费大量的计算, 并给我们一个不正确的答案
所以是的, 它告诉我们到底出了什么问题
所以这真的很强大
如果你知道你在做什么, 就像一旦你成为一个程序员, 你可以编写自己的代码检查,
它可以是一个非常有用的工具, 只要你能够提供问题陈述, 就可以了解你可能做错了什么
对吧？
所以最重要的是告诉他们你的目标是什么, 对吗？
因此, 就像代码生成一样, 你首先要知道你想要生成什么样的代码
在这里, 对于调试, 您需要首先告诉它您希望程序完成什么,
以便它可以帮助您生成正确的行为
对吧？
我告诉它我在试着生成素数, 这样它就知道需要修正什么了
希望这有助于您了解聊天如何帮助您调试, 我们将在下一个视频中讨论文档