平凡案例、基本案例和边缘案例有啥区别?
Posted
技术标签:
【中文标题】平凡案例、基本案例和边缘案例有啥区别?【英文标题】:What's the difference between trivial case, base case, and edge case?平凡案例、基本案例和边缘案例有什么区别? 【发布时间】:2019-07-29 07:02:24 【问题描述】:在谈论算法时,我经常遇到这些术语。
小事例
基本情况
边缘案例
它们都一样吗?或者它们之间有什么显着区别?
【问题讨论】:
ELL.SE 可能更合适?琐碎案例是一种不需要描述的简单案例,很容易解决。基本情况是递归中的非递归场景(空序列的长度,零阶乘......)。边缘情况是可能出现错误的地方,因为许多人不会记得检查它们,通常在域的边缘发现(例如空字符串、被零除、负长度......)它们绝对不一样。跨度> 我认为这取决于上下文。在递归中,所谓的“基本情况”是例如“n 为零”或“列表为空”(另一种情况,当再次调用递归函数时,此处实际上没有名称)。在其他情况下,您可能将其称为“普通情况”,而“正常”输入是“基本情况”。我认为问题在于“基础”可以被解释为“普通”或为“简单”。您究竟是从哪里听到这些术语的? 【参考方案1】:“微不足道的情况”是一种简单、有限的算法仍然可以解决的情况。例如,您需要对数字列表进行排序,但它们已经排序。
“基本情况”通常与递归有关,指的是直接处理的情况,没有任何进一步的递归。例如,快速排序单个元素。 (基本情况通常也是微不足道的。)
“边缘情况”是一种在某些方面不寻常的情况,它没有被适用于大多数情况的逻辑正确处理,或者导致性能或结果特别差。例如,对一个所有元素都相等的数组进行快速排序,从而无法选择有效的枢轴。
【讨论】:
“不平凡的案例”呢? 这是一个非同小可的案例。【参考方案2】:下面说说阶乘算法
factorial (n) = n * factorial (n - 1) if n > 0
= 1 if n is 0
= error if n < 1
琐碎案例:如果算法合理,应该通过的简单案例。 (类似于冒烟测试)通常可以在脑海中或用笔和纸来计算。阶乘 (3) 或阶乘 (5) 示例基本情况:算法收敛到的递归终止条件。在这种情况下,n 为 0。边缘情况:由于语言限制(变量溢出、除以零等),算法可能给出错误答案的情况或算法预计会报告错误的情况优雅地而不是崩溃。
【讨论】:
以上是关于平凡案例、基本案例和边缘案例有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章