1
00:00:00,180 --> 00:00:05,230
让我们回想一下上一课中的这个前导代码问题, 对吧？

2
00:00:05,280 --> 00:00:09,210
如果我们在这里修修补补呢？

3
00:00:09,210 --> 00:00:09,780
好吧 

4
00:00:11,610 --> 00:00:21,090
只是为了证明这一点, 让我们实际上这是一个不同的聊天窗口, 从我们给他们泄漏代码链接的其他聊天窗口

5
00:00:21,540 --> 00:00:29,460
假设我有下面的序列或者下面的问题陈述 

6
00:00:30,990 --> 00:00:31,860
把这个贴进去 

7
00:00:32,910 --> 00:00:34,890
我的解决方案是 

8
00:00:36,330 --> 00:00:37,350
不工作 

9
00:00:37,350 --> 00:00:38,130
为什么？

10
00:00:38,310 --> 00:00:43,920
然后让我们继续粘贴一个修改过的版本, 在那里我们有点搞砸了二分搜索 

11
00:00:44,130 --> 00:00:53,070
在这里加一个1, 在这里加一个2, 我们甚至拼错了, 这里拼错了, 变成了光

12
00:00:53,460 --> 00:00:54,000
好吧 

13
00:00:54,390 --> 00:00:57,000
让我们看看它是否能够找出其中的一些问题 

14
00:00:57,000 --> 00:01:02,960
所以很明显, 首先, 逻辑上有一个大问题, 就像它甚至不应该是正确的 

15
00:01:02,970 --> 00:01:08,220
其次, 有一个语法错误, 甚至不允许它正确编译, 因为在这个函数中,

16
00:01:08,220 --> 00:01:11,130
光从来没有被声明为变量

17
00:01:11,130 --> 00:01:14,990
因此, 您的解决方案中的问题是中间索引mid的计算 

18
00:01:15,000 --> 00:01:18,120
所以这是完全没问题的 

19
00:01:18,300 --> 00:01:19,650
我们来看看 

20
00:01:20,220 --> 00:01:25,350
我们最终改变的是这个mod函数, 让我们看看它们给我们带来了什么 

21
00:01:26,290 --> 00:01:26,590
是的 

22
00:01:26,590 --> 00:01:28,690
他们把我们的国防部改回了两个 

23
00:01:28,720 --> 00:01:31,090
你应该除以2得到中间的索引 

24
00:01:31,600 --> 00:01:35,350
更改mid的计算并允许您的解决方案工作 

25
00:01:35,380 --> 00:01:35,770
是的 

26
00:01:35,770 --> 00:01:42,310
所以他还对代码做了一些其他的修改, 包括检查中间三等于零到中间一等于零,

27
00:01:42,310 --> 00:01:47,200
以及一个错字

28
00:01:47,770 --> 00:01:51,490
所以它实际上是在谈论它为我们修复的一切 

29
00:01:51,490 --> 00:01:56,740
如果我们把它粘贴进去, 我毫不怀疑这和我们以前的情况差不多 

30
00:01:56,740 --> 00:02:01,240
但不管怎么说, 这是个正确的解决方案 

31
00:02:01,240 --> 00:02:03,430
是的, 这工作完美 

32
00:02:03,470 --> 00:02:09,729
它确切地知道我们修复了什么, 尽管这与我们在上一课中的对话上下文不同

33
00:02:09,729 --> 00:02:12,220
所以它实际上记住了这些东西, 这真的很有趣 

34
00:02:12,220 --> 00:02:19,060
也许我们甚至可以追溯到更早的时候, 我们讨论素数的时候, 对吗？

35
00:02:19,060 --> 00:02:30,970
那么如果我们说, 记住埃拉托斯特尼的筛子需要有一个特定的数字范围

36
00:02:30,970 --> 00:02:31,140
好吧 

37
00:02:31,150 --> 00:02:37,240
我们从5开始, 然后一直到x的平方根 

38
00:02:38,330 --> 00:02:40,580
比如x的平方根, 对.

39
00:02:40,760 --> 00:02:42,110
我们来看看

40
00:02:44,590 --> 00:02:47,470
为什么是我的算法生成的？

41
00:02:48,450 --> 00:02:51,180
启动缓慢且不正确 

42
00:02:52,480 --> 00:02:59,290
因为现在我们不仅没有得到输入数X的平方根因子, 而且得到了它的幂

43
00:02:59,560 --> 00:03:03,550
而且我们还在修改起始号码 

44
00:03:03,550 --> 00:03:11,290
所以这实际上甚至不能找到四个数字的三的因数, 这将是非常有问题的

45
00:03:11,770 --> 00:03:14,570
让我们看看它是否能找出问题所在 

46
00:03:14,590 --> 00:03:17,860
在我改变它之后, 它是不正确的, 因为它是外部循环中的一个范围 

47
00:03:17,860 --> 00:03:22,210
应该是2的x的平方根, 而不是5的X天的平方 

48
00:03:23,140 --> 00:03:24,040
真的很好吃

49
00:03:24,130 --> 00:03:25,030
这是这是 

50
00:03:25,030 --> 00:03:26,950
这东西真的很特别

51
00:03:26,950 --> 00:03:27,460
这是 

52
00:03:27,610 --> 00:03:27,970
是的 

53
00:03:27,970 --> 00:03:31,810
所以, 我的意思是, 如果你正在实现一些未知的算法, 你只是不知道哪里出了问题,

54
00:03:31,810 --> 00:03:34,570
你得到了一些不正确的输入, 这件事是疯了

55
00:03:34,570 --> 00:03:40,480
就像它真的可以挑出你的算法的缺陷, 并给你你需要做的修正,

56
00:03:40,480 --> 00:03:42,040
非常简单

57
00:03:42,040 --> 00:03:42,460
所以是的

58
00:03:42,460 --> 00:03:44,360
它甚至解释了为什么, 对吧？

59
00:03:44,380 --> 00:03:48,490
它说这个算法高效的原因是因为你只需要检查X的平方根,

60
00:03:48,490 --> 00:03:54,940
这是这个算法运行速度非常快的一个重要组成部分

61
00:03:54,940 --> 00:04:02,140
所以如果我们一直迭代到X的平方, 那只会浪费大量的计算, 并给我们一个不正确的答案

62
00:04:02,410 --> 00:04:05,860
所以是的, 它告诉我们到底出了什么问题 

63
00:04:05,860 --> 00:04:07,180
所以这真的很强大 

64
00:04:07,180 --> 00:04:13,630
如果你知道你在做什么, 就像一旦你成为一个程序员, 你可以编写自己的代码检查,

65
00:04:13,630 --> 00:04:23,200
它可以是一个非常有用的工具, 只要你能够提供问题陈述, 就可以了解你可能做错了什么

66
00:04:23,200 --> 00:04:23,620
对吧？

67
00:04:23,620 --> 00:04:29,650
所以最重要的是告诉他们你的目标是什么, 对吗？

68
00:04:29,650 --> 00:04:35,020
因此, 就像代码生成一样, 你首先要知道你想要生成什么样的代码

69
00:04:35,020 --> 00:04:40,450
在这里, 对于调试, 您需要首先告诉它您希望程序完成什么,

70
00:04:40,450 --> 00:04:43,960
以便它可以帮助您生成正确的行为

71
00:04:43,960 --> 00:04:44,130
对吧？

72
00:04:44,140 --> 00:04:49,180
我告诉它我在试着生成素数, 这样它就知道需要修正什么了 

73
00:04:49,180 --> 00:04:57,730
希望这有助于您了解聊天如何帮助您调试, 我们将在下一个视频中讨论文档

